Я пытаюсь получить окно сообщения, которое объясняет правила моей игры для заполнения из строки меню. Я могу заставить его правильно заполнять, когда я использую JFrame, однако, когда я нажимаю Ok или X, он по-прежнему остается открытым за пределами моей игры. И я снова должен закрыть его, чтобы снова использовать игру. Я читал, что я не хочу использовать JFrame, что мне нужно будет использовать JDialog, но у меня проблемы с ним.Как использовать JDialog внутри JFrame из другого пакета?
Я пытаюсь выяснить, как использовать JDialog и получить его в центре JFrame из другого пакета. Я не думаю, что я правильно использую JDialog, поскольку я не могу заставить его заселить в первую очередь. Моя основная игра выполняется из другого пакета, называемого simonish, и имеет собственный класс под названием MainGame. А в MainGame есть частный фрейм JFrame.
public class MainGame implements MouseListener, ActionListener{
private JFrame frame = new JFrame("Simonish");
private MenuBar menuBar = new MenuBar();
}
Конечно, это еще не все код, но это внутри пакета Simonish.
Теперь у меня есть еще один пакет под названием компонента, а внутри у меня есть класс с именем MenuBar: общественного класса MenuBar расширяет JMenuBar реализует MenuListener, ActionListener {
JMenuBar menuBar;
JMenu settings, stats, help;
JMenuItem chooseColor, chooseMode, highScoreList, history, about, rules;
public MenuBar() {
//adding help to the menu bar
help = new JMenu("Help");
help.addMenuListener(this);
this.add(help);
//sub categories for help
about = new JMenuItem("About");
about.addActionListener(this);
help.add(about);
rules = new JMenuItem("Rules");
rules.addActionListener(this);
help.add(rules);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(about)){
new PopupMenu();
}
if(e.getSource().equals(rules)){
new RulesPopup();
}
}
}
Я знаю, много недостающих вещей, но при попытке чтобы он был коротким.
И в той же папке Component, у меня есть класс PopUpMenu, это ужасное имя, которое я буду называть PopUpAbout, но вот код.
public class PopupMenu {
JFrame Popup;
public PopupMenu(){
Popup = new JFrame();
Popup.pack();
Popup.setVisible(true);
JOptionPane.showMessageDialog(Popup, "Version 2\n\n" + "Added new features: \n\n" + "Color Customization\n" + "Different Game Modes\n" +
"Menu Bar\n" + "Images\n" + "Sound Effects\n" + "History of Score", "About", JOptionPane.PLAIN_MESSAGE);
}
}
Так лежит моя проблема, я пытался возиться в классе POPUPMENU, но я не могу показаться, чтобы получить JDialog работать вообще. Я попытался изменить их на JDialog и изменить аргументы внутри, но я не могу заставить его заполнить или заставить его заполнить основную игру.
Нужно ли его вызывать внутри MainGame? Или это нужно вызвать в PopUpMenu?
Зачем вам нужно 'Popup'?Вы можете передать 'null' в качестве первого параметра' showMessageDialog', который или передать ваш экземпляр 'MenuBar', и использовать это вместо – MadProgrammer
@MadProgrammer. Я использовал Popup, потому что я следил за демо-кодом, который я читал онлайн. Я попробую null или MenuBar. – Sailanarmo