私は単純なゲームの基本的な機能メニューを作ろうとしています。私は2つのJPanelを作成して、実際のゲーム用と私のメニュー用の2つのJPanelを作成しようとしました。JFrame内の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());
}
}
}
が、私は私のスタートボタンのリスナーを作成しました:
は、ここに私のコードです。リスナーの内部では、getParent()
メソッドを使用してJFrameにアクセスするためにwhileループを使用しました。プログラムはJFrameオブジェクトを取得していますが、setContentPane
メソッドを呼び出さないようにしています...
誰かがこれを動作させる方法や、メニューとゲームを行き来する良い方法を知っていますか?そのよう
'メニューとゲームの間で前後に切り替えるためのより良い方法' - [カードレイアウト](https://docs.oracle.com/javase/tutorialを使うのか? /uiswing/layout/card.html)は、同じコンテナ内のパネルを交換するように設計されています。 – camickr
コンテナ階層を想定しないでください。オブザーバーのパターンを使用して、パネルから、何をすべきかをよりよく判断できる観察者に通知してください。 – MadProgrammer