我正在用JavaFX创建折线图。目前一切都很好,它成功地使用数据库存储过程中需要的数据创建了图表。无论如何,如果可能的话,我需要对LineChart上的每个数据点进行鼠标悬停事件,该事件指出了特定点后面的值,例如150,000英镑。我已经在PieCharts上看到了此示例,该示例显示了悬停时的%值,但是我在LineCharts的任何地方都找不到示例,这是否可以完成?如果可能的话,有人可以指出我正确的方向吗?到目前为止的代码:private static final String MINIMIZED = "MINIMIZED";private static final String MAXIMIZED = "MAXIMIZED";private static String chartState = MINIMIZED;// 12 Month Sales ChartXYChart.Series<String, Number> series = new XYChart.Series<>();XYChart.Series<String, Number> series2 = new XYChart.Series<>();public void getDeltaData() { try { Connection con = DriverManager.getConnection(connectionUrl); //Get all records from table String SQL = ""; Statement stmt = con.createStatement(); //Create the result set from query execution. ResultSet rs = stmt.executeQuery(SQL); while (rs.next()) { series.getData().add(new XYChart.Data<String, Number>(rs.getString(1), Double.parseDouble(rs.getString(7)))); series2.getData().add(new XYChart.Data<String, Number>(rs.getString(1), Double.parseDouble(rs.getString(8)))); } rs.close(); stmt.close(); } catch (Exception e) { } yearChart = createChart();} protected LineChart<String, Number> createChart() { final CategoryAxis xAxis = new CategoryAxis(); final NumberAxis yAxis = new NumberAxis(); // setup chart series.setName("Target"); series2.setName("Actual"); xAxis.setLabel("Period"); yAxis.setLabel("£"); yearChart.getData().add(series); yearChart.getData().add(series2); yearChart.setCreateSymbols(false); return yearChart;}jewelsea提供的答案是此问题的完美解决方案。谢谢你,宝石海。
3 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
使用XYChart.Data.setNode(hoverPane)显示每个数据点的自定义节点。使hoverNode像StackPane这样的容器。添加鼠标事件侦听器,以便您知道鼠标何时进入和离开节点。输入后,将值的标签放置在hoverPane中。在出口处,从hoverPane移除标签。
显示示例代码的输出,并将光标悬停在22个节点上。
添加回答
举报
0/150
提交
取消