新しいスケジュールされたタスクによって上書きされない限り、x 秒後にタスクを実行するにはどうすればよいでしょうか?
シナリオは、ユーザーが JTextField への入力を終了してから 1 秒後にタスクを実行したいというものです。そのためには、タスクをスケジュールし、「ドキュメント」が変更されるたびに再スケジュールする必要があります。
を使用してみましたScheduledExecutorService
が、スケジュールは前のタスクをキャンセルするのではなく、タスクをリストに追加するだけです。
これが私が行きたいところです:
class TextChangeListener implements DocumentListener {
private final ??? updater = new ???();
@Override
public void changedUpdate(DocumentEvent arg0) {}
@Override
public void insertUpdate(DocumentEvent arg0) {
update();
}
@Override
public void removeUpdate(DocumentEvent arg0) {
update();
}
private void update() {
// Wait for the user to finish typing first
updater.schedule(new Runnable() {
@Override
public void run() {
doSomeStuff();
}
}, 1, TimeUnit.SECONDS);
}
}