Как вынести menuBar за static void main?
Как вынести menuBar за главный метод main?
import java.awt.EventQueue;
import java.util.Timer;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class Snake extends JFrame{
private static final long serialVersionUID = 1L;
Timer timer;
public Snake() {
initUI();
}
public void initUI() {
add(new Board());
setResizable(false);
pack();
setTitle("Snake");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame startSnake = new Snake();
JMenuBar menuBar = new JMenuBar();
startSnake.add(menuBar);
JMenu menu = new JMenu("О программе");
JMenu menuSettings = new JMenu("Настройки");
menuBar.add(menu);
menuBar.add(menuSettings);
JMenuItem menuBarColor = new JMenuItem("Цвет фона");
JMenuItem menuBarLevel = new JMenuItem("Уровень");
JMenuItem menuBarLen = new JMenuItem("Длина змейки");
menuSettings.add(menuBarColor);
menuSettings.add(menuBarLevel);
menuSettings.add(menuBarLen);
JMenuItem menuBarHelp = new JMenuItem("Справка");
JMenuItem menuBarDev = new JMenuItem("О разработчике");
JMenuItem menuBarSettings = new JMenuItem("Донат");
menu.add(menuBarHelp);
menu.add(menuBarDev);
menu.add(menuBarSettings);
startSnake.setJMenuBar(menuBar);
startSnake.setVisible(true);
}
});
}
}
Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
Весь код, ответственный за создание полосы меню, следует вынести в отдельный метод и вызвать его либо из метода initUI
, либо из конструктора Snake
после вызова этого метода.
При вызове invokeLater
также лучше использовать более лаконичную лямбду.
import java.awt.EventQueue;
import javax.swing.*;
public class Snake extends JFrame{
private static final long serialVersionUID = 1L;
public static void main(String ... args) {
EventQueue.invokeLater(() -> {
JFrame startSnake = new Snake();
startSnake.setVisible(true);
});
}
public Snake() {
initUI();
}
protected void initUI() {
add(new Board(), BorderLayout.CENTER);
setResizable(false);
pack();
setJMenuBar(createMenuBar());
setTitle("Snake");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private JMenuBar createMenuBar() {
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("О программе");
JMenu menuSettings = new JMenu("Настройки");
menuBar.add(menu);
menuBar.add(menuSettings);
JMenuItem menuBarColor = new JMenuItem("Цвет фона");
JMenuItem menuBarLevel = new JMenuItem("Уровень");
JMenuItem menuBarLen = new JMenuItem("Длина змейки");
menuSettings.add(menuBarColor);
menuSettings.add(menuBarLevel);
menuSettings.add(menuBarLen);
JMenuItem menuBarHelp = new JMenuItem("Справка");
JMenuItem menuBarDev = new JMenuItem("О разработчике");
JMenuItem menuBarSettings = new JMenuItem("Донат");
menu.add(menuBarHelp);
menu.add(menuBarDev);
menu.add(menuBarSettings);
return menuBar;
}
}