所以,我試圖爲一個簡單的遊戲製作一個基本的功能菜單。我試圖通過創建2個JPanels,一個用於實際遊戲,另一個用於我的菜單來實現。如何在面板內切換JFrame中的JPanel?
我想要做的是在我的菜單面板上有一個按鈕,當按下時,將JPanel從菜單的JFrame中顯示到實際遊戲的JPanel。
這裏是我的代碼:
class Menu extends JPanel
{
public Menu()
{
JButton startButton = new JButton("Start!");
startButton.addActionListener(new Listener());
add(startButton);
}
private class Listener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Container container = getParent();
Container previous = container;
System.out.println(getParent());
while (container != null)
{
previous = container;
container = container.getParent();
}
previous.setContentPane(new GamePanel());
}
}
}
正如你所看到的,我創建了一個監聽我的啓動按鈕。在偵聽器內部,我使用了一個while循環通過getParent()
方法到達JFrame。該程序獲取JFrame對象,但它不讓我打電話setContentPane
方法...
有誰知道如何得到這個工作,或更好的方式之間來回切換菜單和遊戲?
'更好的方式來來回切換菜單和遊戲之間的' - 使用[卡布局(https://docs.oracle.com/javase/tutorial /uiswing/layout/card.html),用於在同一個容器中交換面板。 – camickr
不要承擔容器層次結構。使用觀察者模式,並從小組發送通知給觀察員,他能夠更好地確定應該完成的工作 – MadProgrammer