我正在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中创建后台线程的相当烦人的问题!我目前有几个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或图表,或者只是在标签上设置文本(取决于查询).如何在后台线程上执行查询,仍然可以自由使用接口并从查询中更新
提前致谢