4

我想通过单击 JPanel 上的按钮在 JPanel 之间切换。

例如:我有一个带有 JButton simknop 的 JPanel sim 和带有 JButton helpknop 的 JPanel 帮助 我想通过单击按钮在这两个 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);
    }

}

帮助.java

public class help extends JPanel
{
    JButton helpknop;

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

我想为此使用 CardLayout,但我不知道如何让它工作以收听不同的 ActionListener。

任何帮助是极大的赞赏!

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 回答