4

JPanels のボタンをクリックして JPanel を切り替えたい。

例: JButton simknop を備えた JPanel sim と、JButton helpknop を備えた JPanel ヘルプがあります。ボタンをクリックして、これら 2 つの JPanel を切り替えたいと考えています。JButton simknop をクリックすると JPanel ヘルプが表示され、JButton ヘルプをクリックすると JPanel sim が表示されます。

以下に、さまざまなクラスを示します。

main.java

public class main extends JFrame
{

    JPanel cards;
    sim sim;
    help help;

    public main()
    {
        this.setSize(1024,768);
        //this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("Crazy Bombardement");
        this.setLocation(800, 100);//standaard in de hoek van het scherm

        cards = new JPanel();
        cards.setLayout(new CardLayout());
        sim = new sim();
        help = new help();

        cards.add(sim, "SIM");
        cards.add(help, "HELP");    

        this.add(cards);
        this.setVisible(true);
    }

    public static void main(String[] args) 
    {
        new main();
    }

sim.java

public class sim extends JPanel
{
    JButton simknop;

    public sim()
    {
        simknop = new JButton("simknop");
        this.add(simknop);
        this.setBackground(Color.black);
    }

}

help.java

public class help extends JPanel
{
    JButton helpknop;

    public help()
    {
        helpknop = new JButton("helpknop");
        this.add(helpknop);
        this.setBackground(Color.red);
    }

これに CardLayout を使用したいのですが、さまざまな ActionListeners をリッスンするように機能させる方法がわかりません。

どんな助けでも大歓迎です!

4

1 に答える 1

5

1) CardLayout の各パネルにボタンを配置しないでください。カード パネルに表示されているカードに関係なく、常に表示されている別の外部パネルに配置する必要があります。

2) ボタンが正しく配置されたら、各ボタンに ActionListener を追加します。その actionPerformed メソッドは次のようになります (例として SIM ボタンを使用):

CardLayout cl = (CardLayout) cards.getLayout();
cl.show(cards, "SIM");

参考資料: CardLayout の使用方法

編集:理論的には、カード パネルにボタンを直接配置できますが、各パネルの反対側のボタンになります (つまり、SIM ボタンはヘルプ パネルにあり、その逆も同様です)。

于 2013-04-05T18:53:31.957 に答える