Java swing: как обрабатывать события, происходящие в подклассе

#java #swing #jpanel #jbutton

#java #swing #jpanel #jbutton

Вопрос:

Я хочу создать простой калькулятор и иметь эту простую конструкцию:

 CalculatorGUI <>----- ButtonPanel <>------ JButton
  

Где калькулятор имеет JFrame и ButtonPanel (расширяет JPanel). В ButtonPanel есть JButtons.

Я хочу иметь способ передавать события JButton через ButtonPanel таким образом, чтобы я мог перехватывать события в CalculatorGUI. Я думал о передаче событий через ButtonPanel, но я не знаю, как это сделать. Есть ли другой способ сделать это?

Заранее спасибо,

Комментарии:

1. Почему ваша ButtonPanel расширяет JPanel? Вы можете добавить JButtons в JPanel. Композиция намного лучше, чем наследование. Почему вы хотите перехватывать события действия JButton в графическом интерфейсе калькулятора? Смысл создания класса ButtonPanel заключается в том, что вы обрабатываете все, что связано с JButtons, в классе ButtonPanel.

2. @GilbertLeBlanc: Я думаю, что он показывает композиционную взаимосвязь в своей диаграмме UML . Это не стрелки.

Ответ №1:

Вы можете использовать интерфейс, чтобы это произошло. Создайте этот интерфейс в своей панели кнопок и реализуйте этот interfaceListener в графическом интерфейсе вашего калькулятора. Объявите имена ваших методов в интерфейсе, который ваш графический интерфейс калькулятора должен будет переопределить их. Затем в событии вашей кнопки используйте этот интерфейс, чтобы сообщить об этом GUI