管理使用不同类创建的Java CardLayout JPanel

时间:2017-08-14 14:49:43

标签: java swing

我需要一个简单的例子,说明如何使用CardLayout(或其他东西?)在一个JFrame中管理多个JPanel(使用不同的类创建)。这是我需要的一个说明性示例:

小组A

enter image description here

小组B

enter image description here

文件结构示例:

movactions: [
{
     _id: $created_at,
     count: ?,
     data:[
         {
             _id: "$action",
             count: 3,
             data: [
                {
                    _id: "$subaction",
                    count: 2
                }
             ]
          }
     ]
},
]

我发现了很多这样做的例子,但是所有的JPanel都是在JButton作为字段的同一个类中创建的,所以Listener可以访问它们。我尝试编辑这些示例但没有成功。 抱歉我的英文不好,谢谢你提前!

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

Gui.java:

public class Gui {
    ...
    JPanel cards = ne JPanel(new CardLayout());
    private void initComponetns() {
        ...
        // cards to be the container with CardLayout...
        cards.add(new PanelA(this));
        cards.add(new PanelB(this));
        ...
    }
}

PanelA.java

public class PanelA extends JPanel {
    ...
    private final Gui gui;
    PanelA(Gui gui) {
        this.gui = gui;
    }
    ... () {
        setBackground(Color.ORANGE);
        JButton btn = new JButtn("Show Panel B");
        add(btn);
    }

    public void actionPerformed(ActionEvent ae) {
        ...
        gui.cards. ...
    }
}

PanelB.java

public class PanelB extends JPanel {
    ...
    private final Gui gui;
    PanelB(Gui gui) {
        this.gui = gui;
    }
    ...
    ... () {
        setBackground(Color.GREEN);
        JButton btn = new JButtn("Show Panel A");
        add(btn);
    }

    public void actionPerformed(ActionEvent ae) {
        ...
        gui.cards. ...
    }
}

编辑...