Заставьте ваш контроллер («главный» класс) реализовать интерфейс ActionListener, а затем передайте ссылку на класс представления:
public class View extends JFrame {
public View(final ActionListener listener) {
JButton button = new JButton("click me");
button.addActionListener(listener);
button.setActionCommand("do_stuff");
getContentPane().add(button);
pack();
setVisible(true);
}
}
public class Control implements ActionListener {
public Control() {
new View(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("do_stuff")) {
// respond to button click
}
}
}
Это также можно сделать с помощью Действия , но это более полезно, если вы хотите, чтобы один фрагмент кода реагировал на множество кнопок.