Как вручную вызвать действие в разгаре? - PullRequest
24 голосов
/ 20 июня 2010

По жизни я не могу найти подробности о Java Swing Actions: '(Когда я наткнулся на них, я сразу понял их полезность. До сих пор со мной было легко работать. Теперь я застрял с однимвещь: как мне запустить их вручную? Я имею в виду под кодом? Обратите внимание, что я строю графический интерфейс с использованием Netbeans (если это имеет какое-то значение). Я дошел до:написал все в отдельных строках, чтобы упростить отладку)

Итак, теперь у меня есть действительная ссылка на Action. Теперь, как мне его запустить?

Ответы [ 3 ]

30 голосов
/ 27 августа 2012

Вы можете просто вызвать метод события действия напрямую:

for(ActionListener a: buttonExample.getActionListeners()) {
    a.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null) {
          //Nothing need go here, the actionPerformed method (with the
          //above arguments) will trigger the respective listener
    });
}
10 голосов
/ 20 июня 2010

Если вы хотите запустить свое действие вручную, вы можете сгенерировать ActionEvent и передать его в метод actionPerformed, который должен реализовать ваш Action, так как интерфейс Action расширяет ActionListener.

2 голосов
/ 20 июня 2010

Поскольку Action является EventListener, вы можете рассмотреть возможность реализации EventListenerList в качестве способа раскрытия методов, которые запускают действия.

...