我想知道是否有人可以幫助我一個相當煩人的問題,在JavaFX中創建一個後臺線程!我目前有幾個SQL查詢將數據添加到當前在JavaFX應用程序線程上運行的UI(請參見下面的示例)。但是,當這些查詢執行時,它會凍結UI,因爲它不在後臺線程上運行。我查看了使用Task的各種示例並理解它們,但是在執行數據庫查詢時我無法讓它們工作,其中一些需要幾秒鐘才能運行。JavaFX - SQL查詢的後臺線程
下面是該方法的一個執行的查詢:
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) {
}
}
每個處理的記錄被添加到鏈接到一個TableView中,或圖形或簡單地設置在標籤上的文本的ObservableList(取決於查詢)。我怎麼能執行一個後臺線程的查詢,仍然留下自由提前使用,並從查詢更新
感謝
您是否觀察過javafx.concurrent包中的類? docs.oracle.com/javafx/2/api/javafx/concurrent/...。我認爲,Task類應該對你特別有趣:docs.oracle.com/javafx/2/api/javafx/concurrent/Task.html,你可以閱讀它的javadoc,瞭解完整的選項列表。 – 2013-02-14 20:26:28
也許DataFX可以幫助您:http://www.javafxdata.org或http://www.guigarage.com/category/datafx/ – 2013-02-15 13:32:58