2012-03-21 2 views
3

У меня есть класс меню под названием «Меню, определяющий JFrame», этот класс создает два объекта JPanel, которые содержат текстовые поля и кнопки. В каждом классе расширения JPanel есть закрытый внутренний класс, который обрабатывает события, вызванные нажатием кнопок.Обработчики событий Swing Component

Я хочу знать, есть ли способ для класса меню обнаруживать инициируемые события из кнопок внутри JPanels.

Не могли бы вы добавить слушателя в JPanel в классе Menu и сделать что-то вроде этого? :

if(event.getSource() == panel.getButton1()){ 
    //do button1 code 
} 

ответ

3

JPanels и фактически все компоненты Swing имеют поддержку изменения свойств, поэтому вы можете легко добавить PropertyChangeListener в любой компонент и прослушать изменения состояния. Просто убедитесь, что в коде, состояние которого меняется на вызов firePropertyChange(...) после изменения состояния.

1

Вы всегда можете добавить слушателей к компонентам (например ActionListener экземплярам) и обрабатывать их.

С точки зрения дизайна вы должны рассмотреть разделение меню/макета и обработку событий, то есть использовать отдельный контроллер для прослушивания событий и обработки их.

Смежные вопросы