JavaFX LineChart悬停值

我正在用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 Chart

XYChart.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提供的答案是此问题的完美解决方案。


谢谢你,宝石海。


拉丁的传说
浏览 1182回答 3
3回答

一只斗牛犬

使用XYChart.Data.setNode(hoverPane)显示每个数据点的自定义节点。使hoverNode像StackPane这样的容器。添加鼠标事件侦听器,以便您知道鼠标何时进入和离开节点。输入后,将值的标签放置在hoverPane中。在出口处,从hoverPane移除标签。显示示例代码的输出,并将光标悬停在22个节点上。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java