Ответ 1
Если вы хотите запустить свое действие вручную, вы можете сгенерировать ActionEvent
и передать его в метод actionPerformed
, который должен реализовать ваш Action
, поскольку интерфейс Action
расширяет ActionListener
.
В жизни я не могу найти подробностей о действиях 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. Теперь как его запустить?
Если вы хотите запустить свое действие вручную, вы можете сгенерировать ActionEvent
и передать его в метод actionPerformed
, который должен реализовать ваш Action
, поскольку интерфейс Action
расширяет ActionListener
.
Вы можете просто вызвать метод события непосредственно:
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
});
}
Поскольку Action
является EventListener
, вы можете захотеть реализовать EventListenerList
как способ разоблачения методов, которые срабатывают.