Ich frage mich, ob jemand mir mit einem ziemlich nervigen Problem in Bezug auf die Erstellung eines Hintergrund-Threads in JavaFX helfen kann! Ich habe derzeit mehrere SQL-Abfragen, die Daten zur Benutzeroberfläche hinzufügen, die derzeit auf dem JavaFX-Anwendungsthread ausgeführt werden (siehe Beispiel unten). Wenn jedoch jede dieser Abfragen ausgeführt wird, wird die Benutzeroberfläche eingefroren, da sie nicht auf einem Hintergrundthread ausgeführt wird. Ich habe mir verschiedene Beispiele angeschaut, die Task verwenden und sie verstehen, aber ich kann sie nicht zum Laufen bringen, wenn Datenbankabfragen durchgeführt werden, von denen einige einige Sekunden dauern.JavaFX - Hintergrund Thread für SQL-Abfrage
Hier ist eine der Methoden, die eine Abfrage ausführt:
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) {
}
}
jeder verarbeitete Datensatz zu einem ObservableList hinzugefügt wird, die zu einem Tableview verknüpft ist, oder ein Diagramm oder setzen einfach den Text auf einem Etikett (abhängig von die Abfrage). Wie kann ich die Abfrage auf einem Hintergrund-Thread ausführen und lassen noch die Schnittstelle frei zu verwenden und aus den Abfragen
Vielen Dank im Voraus aktualisiert
Haben Sie Klassen im Paket javafx.concurrent beobachtet? docs.oracle.com/javafx/2/api/javafx/concurrent/.... Ich denke, eine Task-Klasse sollte für Sie besonders interessant sein: docs.oracle.com/javafx/2/api/javafx/concurrent/Task.html, Sie können ihr Javadoc lesen, um die vollständige Liste der Optionen zu verstehen. –
Vielleicht kann DataFX Ihnen helfen: http://www.javafxdata.org oder http://www.guigarage.com/category/datafx/ –