Я создаю приложение «GUI», чтобы сделать код понятным и разделяя эти компоненты «GUI» на классы (вы увидите ниже, что я имею в виду), который сейчас хорошо с панелью меню, но теперь мне интересно, так как я хочу реализовать ActionListener для них, где лучше всего сделать это, в каком классе, например в этом случае класса меню, в своем классе или реализовать исполнитель действий в Основной и чем реализовать абстрактный метод, который будет использовать методы, которые мы хотим выполнить?Разделение компонентов на классы
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
public final class Main extends JFrame {
private MenuBar menuBar;
public Main() {
setTitle("GUI");
setSize(300, 200);
setLocationRelativeTo(null);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
initGUI();
}
public void initGUI() {
menuBar = new MenuBar(this);
// this is last update before I started posting this, I decided to
// access exitMenu variable and than to addActionListener to it from a here, which is currently not working
menuBar.exitMenu.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
new Main();
}
}
Строка меню Класс:
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
public final class MenuBar {
public JMenu newMenu;
public JMenu aboutMeMenu;
public JMenu exitMenu;
public MenuBar(JFrame jFrame) {
JMenuBar menubar = new JMenuBar();
initNew(menubar);
initAboutMe(menubar);
initExit(menubar);
jFrame.setJMenuBar(menubar);
}
public void initNew(JMenuBar menubar) {
newMenu = new JMenu("New");
menubar.add(newMenu);
}
public void initAboutMe(JMenuBar menubar) {
aboutMeMenu = new JMenu("About Me");
menubar.add(aboutMeMenu);
}
public void initExit(JMenuBar menubar) {
exitMenu = new JMenu("Exit");
menubar.add(exitMenu);
}
}
Но есть ли шанс сделать то, что я делаю? Потому что мне действительно нужно ... единственная проблема в том, что actionListener не работает ... –