所以我的代码已经创建了一个由按钮和标签组成的开始菜单。当按下其中一个按钮时,我想删除所有内容(它所做的)并显示一个新标签和一个按钮。只有新项目没有出现,请帮助
public GUI(){
super("Snake Game");
setLayout(new GridBagLayout());
gbc.insets = new Insets(20, 20, 0, 0);
title = new JLabel("SNAKE");
gbc.gridx = 0;
gbc.gridy = 0;
add(title, gbc);
newGameButton = new JButton("New Game");
gbc.gridx = 0;
gbc.gridy = 1;
add(newGameButton, gbc);
twoPlayerButton = new JButton("2 player Mode");
gbc.gridx = 0;
gbc.gridy = 2;
add(twoPlayerButton, gbc);
highScore = new JButton("HighScores");
gbc.gridx = 0;
gbc.gridy = 3;
add(highScore, gbc);
ButtonHandler handler = new ButtonHandler();
newGameButton.addActionListener(handler);
twoPlayerButton.addActionListener(handler);
highScore.addActionListener(handler);
}
我认为这就是所有相关的,但是如果你需要我在这里首先制作菜单的代码,那就是:
public class SnakeGame extends Canvas implements Runnable {
public boolean read = false;
public SnakeGame(){
GUI frame = new GUI();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,300);
frame.setVisible(true);
}
public void run(){
}
public static void main(String[] args) {
SnakeGame Game = new SnakeGame();
}
}
此代码引用的动作列表在此类中的类中并且工作正常,当按下高分时它将执行其操作然后调用我显示的第一个代码块。
最后这里是主要的,以防你需要它:
{{1}}
答案 0 :(得分:3)
不要在Swing应用程序中混合使用AWT组件。画布是AWT。使用JPanel进行自定义绘画。
在可见GUI上添加/删除组件时的基本代码是:
if IsVowel
AMethodIShouldCallOnAllVowels();
else
AMethodIShouldCallOnAllConsonants();
如果不调用布局管理器,则组件的大小为0,因此无需绘制任何内容。