Javafx 2 Javafx中如何使用Task类call方法的返回值

Javafx 2 Javafx中如何使用Task类call方法的返回值,javafx-2,Javafx 2,我使用Task类在javafx应用程序中运行后台任务,从数据库中获取数据 public class CustomTask extends Task<ObservableList<ObservableList>> { TableView tableview; ObservableList<ObservableList> data; public CustomTask(TableView tableview) { this

我使用Task类在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;
    }
}    
public类CustomTask扩展任务{
TableView TableView;
可观测数据;
公共自定义任务(TableView TableView){
this.tableview=tableview;
}
@凌驾
受保护的ObservableList调用()引发异常{
DateFormat DateFormat=新的简化格式(“yyyy-MM-dd”);
日期=新日期();
String SQL=“SELECT*from sell where Date=”+dateFormat.format(Date)+“”;
ResultSet rs=DBConnect.getResultSet(SQL);
data=DBConnect.generateListDateFromTable(rs,true);
返回数据;
}
}    

如何使用数据对象。

绑定到任务的或提供事件处理程序,并在提供的事件处理程序中调用Task.getValue()。

示例1
addEventHandler

MyResultObjectType结果;
CustomTask任务=新建CustomTask();
task.addEventHandler(WorkerStateEvent.WORKER_状态_成功,
新的EventHandler(){
@凌驾
公共无效句柄(WorkerStateT事件){
结果=task.getValue();
}
});
示例2
setonsucceed

MyResultObjectType结果;
CustomTask任务=新建CustomTask();
task.setOnSucceeded(新的EventHandler(){
@凌驾
公共无效句柄(WorkerStateT事件){
结果=task.getValue();
}
});
示例3
addListener

task.valueProperty().addListener(新的ChangeListener()){
@凌驾

更改公众假期(ObservalEvalueDos just onSucceeded返回值还是onCanceled/onFailed?我想知道我是否取消任务如何获得返回的当前值,但不确定绑定是否是唯一的方法。感谢与任务的值无关,它只是任务成功时要执行的事件处理程序。如果要获得相应的值,则y您可以在事件处理程序的主体中执行(如marc对这个问题的回答)。您可以执行相同的任务。getValue()如果愿意,可以调用处理程序。根据任务的运行方式,从已取消的任务中获取值可能有意义,也可能没有意义。正如您所提到的,绑定到valueProperty也会起作用。内部类中使用的变量应该是final。但如果是final,我们无法在内部类中更改它…@SriramKailasam我知道它是l但是为了防止其他人需要,您可以使用
t.getSource().getValue()