Как запустить новую игру, используя JMenuBar
У меня такая игра с шариками и я пытаюсь создать JMenuBar
,
У меня проблема с кнопкой New
, Теперь игра запускается сразу же, когда я запускаю свою программу и нажимаю кнопку New
игра снова открывается в новом окне. У меня проблема с этим методом: fileNew.addActionListener(new ActionListener()
, Этот метод запускает игру снова в новом окне, это не правильно.
Моя цель: при первом запуске программы я вижу пустую таблицу и только после нажатия кнопки New
это начинается (появляются шары). Если я нажму кнопку New
во время игры снова начинается в том же окне. Как мне этого добиться?
Мой код:
package api;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.FileNotFoundException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import gui.Render;
import database.SaveGame;
public class Main extends JFrame {
public Main() {
// ------menu------//
JMenuBar menubar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
fileMenu.setMnemonic(KeyEvent.VK_F);
JMenuItem fileNew = new JMenuItem("New");
fileNew.setMnemonic(KeyEvent.VK_N);
JMenuItem fileSave = new JMenuItem("Save");
fileNew.setMnemonic(KeyEvent.VK_O);
JMenuItem fileLoad = new JMenuItem("Load");
fileSave.setMnemonic(KeyEvent.VK_S);
JMenuItem fileExit = new JMenuItem("Exit");
fileExit.setMnemonic(KeyEvent.VK_C);
fileExit.setToolTipText("Exit application");
fileExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, ActionEvent.CTRL_MASK));
JMenu helpMenu = new JMenu("Help");
JMenuItem about = new JMenuItem("About");
// website button action
about.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
launchURL("https://www.kurnik.pl/kulki/zasady.phtml");
}
});
// ---new---//
fileNew.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
String[] value = null;
Main.main(value);
}
});
// ---exit---//
fileExit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
fileMenu.add(fileNew); // file
fileMenu.add(fileLoad); // load
fileMenu.add(fileSave); // save
fileMenu.addSeparator(); // ____
fileMenu.addSeparator(); // ____
fileMenu.add(fileExit); // exit
helpMenu.add(about);
menubar.add(fileMenu);
menubar.add(helpMenu);
setJMenuBar(menubar);
int width = Game.widthSize * Render.SCALE;
int height = Game.heightSize * Render.SCALE;
Game game = new Game();
add(new Render(game, width, height));
setTitle("Kulki");
setSize(width + 18, height + 38);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
static void launchURL(String s) {
String s1 = System.getProperty("os.name");
try {
if (s1.startsWith("Windows")) {
Runtime.getRuntime().exec((new StringBuilder()).append("rundll32 url.dll,FileProtocolHandler ").append(s).toString());
} else {
String as[] = {"firefox", "opera", "konqueror", "epiphany",
"mozilla", "netscape"};
String s2 = null;
for (int i = 0; i < as.length && s2 == null; i++) {
if (Runtime.getRuntime().exec(new String[]{"which", as[i]}).waitFor() == 0) {
s2 = as[i];
}
}
if (s2 == null) {
throw new Exception("Could not find web browser");
}
Runtime.getRuntime().exec(new String[]{s2, s});
}
} catch (Exception exception) {
System.out.println("An error occured while trying to open the web browser!\n");
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Main ms = new Main();
ms.setVisible(true);
}
});
}
}