#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