15

我正在使用 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;
    }
}    

如何使用数据对象。

4

2 回答 2

31

示例 1addEventHandler

MyResultObjectType result;
CustomTask task = new CustomTask();
task.addEventHandler(WorkerStateEvent.WORKER_STATE_SUCCEEDED, 
        new EventHandler<WorkerStateEvent>() {
    @Override
    public void handle(WorkerStateEvent t) {
        result = task.getValue();
    }
});

示例 2setOnSucceeded

MyResultObjectType result;
CustomTask task = new CustomTask();
task.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
    @Override
    public void handle(WorkerStateEvent t) {
        result = task.getValue();
    }
});

示例 3addListener

task.valueProperty().addListener(new ChangeListener<Task>() {
    @Override
    public void changed(ObservableValue<? extends mytype> obs, 
                        mytype oldValue, mytype newValue) {
        if (newValue != null) {
            System.out.println("Result = " + newValue);
        }
    }
});
于 2014-06-15T02:43:40.463 回答
19

绑定到任务的value 属性或提供task.setOnSucceeded()事件处理程序并在提供的事件处理程序中调用 task.getValue()。

于 2012-07-30T09:52:16.160 回答