1

タスクを実行する前後に、ステータス バー ラベルのテキストを更新したいと思います。これはコード例です:

    label.setText("please wait...");

    Task<Void> task = new Task<Void>() {
        @Override
        protected Void call() throws Exception {
            veryLongOperation();
            return null;
        }
    };

    Thread thread = new Thread(task);
    thread.start();

    while (thread.isAlive()) {
        System.out.println("waiting...");
        Thread.currentThread().sleep(10);
    }

    System.out.println("work done!");
    label.setText("work done!");

この例では、ラベルのテキスト値を変更できません...どうすればテキストを更新できますか?

4

1 に答える 1

0

次のようにTask#suceededメソッドをオーバーライドしようとしましたか:

Task<Void> task = new Task<Void>() {
    @Override
    protected Void call() throws Exception {
        veryLongOperation();
        return null;
    }

    @Override
    protected void succeeded() {
        System.out.println("work done!");
        label.setText("work done!");
    }
};

new Thread(task).start();
于 2013-01-04T09:54:32.463 に答える