Mi chiedo se qualcuno può aiutarmi con un problema piuttosto fastidioso relativo alla creazione di un thread in background in JavaFX! Al momento ho diverse query SQL che aggiungono dati all'interfaccia utente attualmente in esecuzione sul thread dell'applicazione JavaFX (vedere l'esempio seguente). Tuttavia, quando ognuna di queste query viene eseguita, blocca l'interfaccia utente perché non è in esecuzione su un thread in background. Ho esaminato vari esempi che utilizzano Task e li comprendono, ma non riesco a farli funzionare quando eseguo query di database, alcune delle quali richiedono alcuni secondi per essere eseguite.JavaFX - Thread in background per query SQL
Ecco uno dei metodi che esegue una query:
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) {
}
}
Ogni record elaborato viene aggiunto a un ObservableList che è collegato a un TableView, o un grafico o semplicemente imposta il testo su un'etichetta (dipende la query). Come posso eseguire la query su un thread in background e lasciano ancora l'interfaccia libera di utilizzare ed essere aggiornati dalle query
Grazie in anticipo
Avete osservato le classi nel pacchetto javafx.concurrent? docs.oracle.com/javafx/2/api/javafx/concurrent/.... Penso che una classe Task dovrebbe essere particolarmente interessante per te: docs.oracle.com/javafx/2/api/javafx/concurrent/Task.html, puoi leggere la sua javadoc, per capire l'elenco completo delle opzioni. –
Forse DataFX può aiutarti: http://www.javafxdata.org o http://www.guigarage.com/category/datafx/ –