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 に答える