Подтвердить что ты не робот

Как вручную вызвать действие в swing?

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

Application a = Application.getInstance(JPADemoApp.class);
ApplicationContext ctx = a.getContext();
ActionMap am = ctx.getActionMap(JPADemoView.class, this.app);
Action act = am.get("fetchOrders");

(я написал все на отдельных строках, чтобы упростить отладку)

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

4b9b3361

Ответ 1

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

Ответ 2

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

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
    });
}

Ответ 3

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