我正在用JavaFX创建一个线状图。目前一切都很好,它成功地用我从数据库存储过程中需要的数据创建了图表。无论如何,如果可能的话,我需要的是LineChart上的每个数据点都有一个鼠标悬停事件,鼠标悬停事件表示特定点后面的值,例如,15万if。我在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;
}珠宝海提供的答案是解决这个问题的完美方法。
谢谢珠宝商。
发布于 2013-01-31 10:21:53
使用XYChart.Data.setNode(hoverPane)显示每个数据点的自定义节点。让hoverNode像StackPane一样成为一个容器。添加鼠标事件侦听器,以便您知道何时鼠标进场和叶节点。在enter中,在hoverPane中放置一个值的hoverPane。退出时,从hoverPane中移除标签。
有一些示例代码可以演示这种技术。
示例代码的输出显示在22节点上游标悬停。

https://stackoverflow.com/questions/14615590
复制相似问题