我是Java GUI的新手,我正在尝试制作我的第一个视觉游戏。当我们运行程序时,会弹出一个包含两个按钮的窗口,如果您单击其中的一个,则游戏开始。 ,我创建了一个扩展JPanel的类,因此将创建我的第一个面板,并创建该类的对象并将其添加到JFrame中。但是我需要在单击按钮时更改面板,所以我创建了一个新面板。我的主游戏类中的JPanel对象JPanel。因为第二个JPanel是用不同的方式创建的,所以我将我的第一个JPanel做成了类似的JPanel,并将getter和setter放入了我的框架类。但是代码给了我NullPointerException错误。
这是我的课程:
public class Frame {
//The constructor method for frame.
private static JPanel panel;
public Frame () {
JFrame frame = new JFrame();
frame.add(panel); //Adding the panel of the game to the frame.
frame.setTitle("Halma Game"); //The title of the window popped up when the program runs.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static JPanel getPanel() {
return panel;
}
public static void setPanel(JPanel panel) {
Frame.panel = panel;
}
}
public class MenuPanel extends JPanel implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
private JButton playButton;
private JButton recordButton;
private JLabel label;
private JPanel panel = new JPanel();
public MenuPanel() {
panel.setBorder(BorderFactory.createEmptyBorder(300,400,300,400));
panel.setLayout(new GridLayout(0,1));
panel.setBackground(Color.decode("255128255"));
playButton = new JButton("New Game");
playButton.setFocusable(false);
playButton.setBackground(Color.PINK);
playButton.setFont(new Font("Ariel",Font.ITALIC,25));
playButton.addActionListener(this); //??? //Mohreha ro ye abstact beheshon bezani khoobe
panel.add(playButton);
recordButton = new JButton("HighScores");
recordButton.setFocusable(false);
recordButton.setBackground(Color.pink);
playButton.setFont(new Font("Ariel",Font.ITALIC,25));
panel.add(recordButton);
label = new JLabel();
}
@Override
public void actionPerformed(ActionEvent e) {
GamePanel game = new GamePanel();
game.start();
}
}
我还没有在此代码上尝试第二个JPanel,但是这个似乎不起作用。
嗨,埃琳娜,您的面板尚未实例化
私有静态JPanel面板;
当您打电话时
frame.add(panel); //将游戏面板添加到框架中。