Action

Action в Java

Разные кнопки могут выполнять одно действие.

Можно создать один класс, который будет обрабатывть нажитие на любую из этих кнопок.

Такой класс реализует интерфейс Action. Абстрактный класс AbstractAction реализует частично интерфейс Action.

Построим класс, расширяюший AbstractAction, и установим его в качестве обработчика нажатия на наши кнопки.

Пример класса, расширяюшего AbstractAction:

Здесь в конструкторе мы указываем String label — это надпись на кнопках, ImageIcon icon — картинка на этих кнопках, String prompt - текст подсказки, Integer mnemonicKey — мнемоническая кнопка. Метод void actionPerformed(ActionEvent event) выполнит действие, общее для всех кнопок.

Экземпляр класса MyAction:

А теперь создадим кнопки и установим для них в качестве обработчика нажатия экземпляр класса MyAction:
кнопка JMenuItem action в меню:

кнопка JButton btAction в панели инструментов:

обычная кнопка JButton bt:

bt = new JButton(myAction);

кнопка во всплывающем меню JMenuItem act:

В конструкторах всех 4-х кнопок указан myAction, т.е. экземпляр класса MyAction, поэтому надпись на всех кнопках, картинка на них, подсказка и мнемоническая кнопка будут для всех кнопок одинаковы. Это избавляет нас от необходимости написать обработчик нажатия на каждую кнопку по отдельности, а также указывать атрибуты кнопок: надпись, картинка и т.п.

Получаем Action, Java

такой результат.