Swing Application Framework @ Действие аннотации? зачем? - PullRequest
2 голосов
/ 13 января 2010

На самом деле я использую Swing Application Framework в настольном приложении и хорошо использую постоянство состояния сеанса и менеджер ресурсов (отлично подходит для глобализации)

Сейчас я тестирую функцию аннотации @Action, и на самом деле я не вижу никаких преимуществ по сравнению с ее НЕиспользованием. Официальный документ перечисляет в основном эти преимущества:

вы можете удобно поставить все соответствующие визуальные подсказки и тому логика обработки событий для компонента в одном месте.

Да, это место, где хранятся визуальные подсказки, является комплектом ресурсов. (может использоваться с Resource Manager) Да, логика обработки событий в одном месте находится в общем методе. но нет необходимости аннотировать метод, чтобы сделать его общим для нескольких событий.

Еще одно удобное преимущество использования Интерфейсы действий - это то, что вы можете повторно использовать одно и то же действие в нескольких Компоненты пользовательского интерфейса. GUI часто предоставляют несколько способов выполнить задачу

Да, очевидно, что обработка событий может быть общей для разных событий, но опять же использование аннотации @Action не требуется для вызова общего метода из разных методов прослушивателей действий.

Я не вижу большого преимущества в написании этого:

 openButton.setAction(actionMap.get("open"));
 // NOI18N

 @Action public void open() {
     // processing logic 
 }

вместо:

 openButton.addActionListener(new
 java.awt.event.ActionListener() {
             public void actionPerformed(java.awt.event.ActionEvent evt) {
                 openButtonActionPerformed(evt);
             } });

 private void openButtonActionPerformed(java.awt.event.ActionEvent evt) {
     // processing logic 
 }

Чтобы упомянуть, что при использовании последнего я сохраняю свой метод приватным, который более аккуратен, и я также сохраняю контроль над определенными компонентами, добавляемыми слушателем (так как каждый из них будет иметь свои собственные ресурсы вместо того, чтобы использовать одну и ту же визуальную подсказку !)

Кто-нибудь проявил реальный интерес к использованию аннотаций @Action?

Ответы [ 2 ]

2 голосов
/ 12 ноября 2011

В документации дан ответ на ваш вопрос.

https://docs.oracle.com/javaee/6/api/javax/xml/ws/Action.html

Я думаю, что преимущество использования @Action, а не анонимного ActionListener, состоит в том, что @Action - это очень приятный и удобный хук в фреймворке, который позволяет очень просто локализовать вещи для действия, такие как значки, текст или мнемонику. Кроме того, если ваш аннотированный метод @Action возвращает объект Task, платформа соответствующим образом обрабатывает выполнение кода, который не должен выполняться в EDT.

Без использования фреймворков @Action вы должны быть очень осторожны при локализации ваших ActionListeners и еще более осторожно относиться к тому, как вы управляете кодом, который не должен запускаться в EDT (если вы хотите адаптивный пользовательский интерфейс).

Использование @Action в методе, возвращающем Task, является очень мощным удобством, предоставляемым этой средой.

1 голос
/ 14 января 2010

Когда я использую NetBeans, каждый метод, отмеченный @Action, будет автоматически доступен в графическом интерфейсе NetBeans для настройки действий над компонентами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...