G'day all,Сложность удаления всех компонентов из Jpanel
Я кодирую главное меню для проекта. Меню отображается правильно. Я также создал ActionListeners для трех кнопок в меню.
Что я хочу сделать, это повторно использовать JPanel для нового набора переключателей, когда пользователь выбирает «Начать новую игру».
Однако кодирование ActionPerformed, чтобы удалить существующие компоненты из JPanel, меня озадачило. Я знаю, что removeAll как-то важен, но, к сожалению, NetBeans сообщает мне, что я не могу назвать его в моем mainMenu JPanel объекте в ActionPerformed. Поэтому я прокомментировал это в своем коде ниже, но оставил его, чтобы вы могли видеть, что я пытаюсь сделать.
Ваши мысли или советы приветствуются.
Вот мой основной код:
public class Main {
public static void main(String[] args) {
MainMenu menu = new MainMenu();
menu.pack();
menu.setVisible(true);
}
}
Вот мой MainMenu код:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MainMenu extends JFrame implements ActionListener {
JButton startNewGame = new JButton("Start a New Game");
JButton loadOldGame = new JButton("Load an Old Game");
JButton seeInstructions = new JButton("Instructions");
public MainMenu() {
super("RPG Main Menu");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel mainMenu = new JPanel();
mainMenu.setLayout(new FlowLayout());
startNewGame.setMnemonic('n');
loadOldGame.setMnemonic('l');
seeInstructions.setMnemonic('i');
startNewGame.addActionListener(this);
loadOldGame.addActionListener(this);
seeInstructions.addActionListener(this);
mainMenu.add(startNewGame);
mainMenu.add(loadOldGame);
mainMenu.add(seeInstructions);
setContentPane(mainMenu);
}
public void actionPerformed(ActionEvent evt) {
Object source = evt.getSource();
if (source == startNewGame) {
// StartNewGame code goes here
// mainMenu.removeAll();
}
if (source == loadOldGame) {
// LoadOldGame code goes here
}
if (source == seeInstructions) {
// Quit code goes here
}
}
}
Спасибо Зак. Я буду рассматривать CardLayout. – elwynn