Управление включениями является неотъемлемой частью логики пользовательского интерфейса.Действие помогает вам в этом:
Action action = new AbstractAction("myAction") {
public void actionPerformed(ActionEvent e) {
setEnabled(false);
doPerform();
setEnabled(true);
}
};
button.setAction(action);
Осторожно: долго выполняемое задание не должно выполняться в EDT, так что это только на короткий срок, чтобы предотвратить второй или около того щелчокс эффектом
Edit
только что заметил, что вы пометили вопрос с помощью jsr296, тогда это еще проще: вы можете пометить метод вашей модели презентации как @Actionсвяжите его свойство enabled со свойством модели
@Action (enabledProperty == "idle")
public void processOk() {
setIdle(false);
doStuff;
setIdle(true);
}
Плюс есть поддержка (много обсуждаемая, но полезная) для задач: в основном SwingWorker с мелкозернистой поддержкой жизненного цикла