Вы запускаете приложение с помощью Controller
.В конструкторе вашего контроллера вы собираетесь инициализировать первый графический интерфейс, который хотите открыть, скажем, GUI_A
:
private GUI_A gui_a = null;
Controller() {
gui_a = new GUI_A(this);
}
Как вы могли заметить, я вызвал конструктор GUI_A
с однимпараметр: this
.this
ссылается на экземпляр текущего класса, поэтому this
имеет тип Controller
.Конструктор GUI_A
должен выглядеть примерно так:
private Controller controller = null;
GUI_A(Controller ctrl) {
controller = ctrl;
}
Это простой способ получить графический интерфейс, известный для Controller
.
Следующее, что вы сделаетеотображается GUI_A
:
gui_a.setVisible(true);
Если вы теперь хотите обрабатывать нажатия кнопок, вы должны сделать это следующим образом:
Сначала вы добавляете метод, выполняемый действием, к своей кнопке.,И, как это рекомендуется в MVC, вы не хотите делать логику в своем представлении / графическом интерфейсе.Таким образом, вы также создаете соответствующий метод в вашем Controller
для выполненного действия и вызываете его из своего графического интерфейса:
// Controller
GUI_A_button1_actionPerformed(ActionEvent evt) {
// Add your button logic here
}
// GUI_A
button1_actionPerformed(ActionEvent evt) {
controller.GUI_A_button1_actionPerformed(evt);
}
Обычно вам не нужно передавать ActionEvent-var в контроллер,как вам это не понадобится часто.Чаще вы читали текст из TextField и передавали его своему контроллеру:
// Controller
GUI_A_button1_actionPerformed(String text) {
// Add logic for the text here
}
// GUI_A
button1_actionPerformed(ActionEvent evt) {
controller.GUI_A_button1_actionPerformed(textField1.getText());
}
Если вы сейчас хотите получить доступ к некоторым полям вашего GUI_A
из Controller
, убедитесь, что нетпомечать поля как открытые в вашем графическом интерфейсе, но создавать открытые методы, которые обрабатывают способ отображения значений.