Estoy utilizando la clase Task para ejecutar tareas en segundo plano en la aplicación javafx para recuperar los datos de la base de datos.Cómo utilizar el valor de retorno del método de llamada de la clase Task en Javafx
public class CustomTask extends Task<ObservableList<ObservableList>> {
TableView tableview;
ObservableList<ObservableList> data;
public CustomTask(TableView tableview) {
this.tableview=tableview;
}
@Override
protected ObservableList<ObservableList> call() throws Exception {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
String SQL = "SELECT * from sell where Date='" + dateFormat.format(date) + "'";
ResultSet rs = DBConnect.getResultSet(SQL);
data = DBConnect.generateListDateFromTable(rs, true);
return data;
}
}
Cómo utilizar el objeto de datos.
¿Hay algún ejemplo de cómo hacer esto? –
¿simplemente onSucceeded devuelve valor o onCanceled/onFailed? Me pregunto si cancelo la tarea para obtener el valor actual pero no estoy seguro si el enlace es la única forma. gracias – Ewoks
[setOnSucceeded] (https://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/Task.html#setOnScheduled-javafx.event.EventHandler-) no tiene nada que ver con el valor de la tarea, es solo un controlador de eventos que se ejecutará cuando la tarea tenga éxito. Si desea obtener el valor correspondiente, puede ejecutar [task.getValue()] (https://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/Task.html#getValue--) en el cuerpo del controlador de eventos (como la respuesta de Marc a esta pregunta). – jewelsea