小编Uni*_*qum的帖子

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), …
Run Code Online (Sandbox Code Playgroud)

javafx-2

16
推荐指数
2
解决办法
2万
查看次数

JavaFX - SQL查询的后台线程

我想知道是否有人可以帮助我解决在JavaFX中创建后台线程的相当烦人的问题!我目前有几个SQL查询将数据添加到当前在JavaFX应用程序线程上运行的UI(参见下面的示例).但是,当每个查询执行时,它会冻结UI,因为它不在后台线程上运行.我已经查看了使用Task的各种示例,并了解它们,但是在进行数据库查询时我无法使它们工作,其中一些需要几秒钟才能运行.

以下是执行查询的方法之一:

public void getTopOrders() {
    customerOrders.clear();
    try {
        Connection con = DriverManager.getConnection(connectionUrl);
        //Get all records from table
        String SQL = "EXEC dbo.Get_Top_5_Customers_week";
        ResultSet rs;
        try (Statement stmt = con.createStatement();) {
            rs = stmt.executeQuery(SQL);

            while (rs.next()) {
                double orderValue = Double.parseDouble(rs.getString(3));
                customerOrders.add(new CustomerOrders(rs.getString(1),
                        rs.getString(2), "£" + formatter.format(orderValue),
                        rs.getString(4).substring(6, 8) + "/" + 
                        rs.getString(4).substring(4, 6) + "/" + 
                        rs.getString(4).substring(0, 4)));
            }
        }

    } catch (SQLException | NumberFormatException e) {
    }
}
Run Code Online (Sandbox Code Playgroud)

每个已处理的记录都会添加到ObservableList中,该ObservableList链接到TableView或图表,或者只是在标签上设置文本(取决于查询).如何在后台线程上执行查询,仍然可以自由使用接口并从查询中更新

提前致谢

javafx javafx-2

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

javafx-2 ×2

javafx ×1