管理使用不同类创建的Java CardLayout JPanel
我需要一个简单的例子,说明如何使用CardLayout或其他方法在一个JFrame中管理使用不同类创建的多个JPanel?。这是我需要的一个示例: A小组: B小组: 文件结构示例:管理使用不同类创建的Java CardLayout JPanel,java,swing,Java,Swing,我需要一个简单的例子,说明如何使用CardLayout或其他方法在一个JFrame中管理使用不同类创建的多个JPanel?。这是我需要的一个示例: A小组: B小组: 文件结构示例: // Gui.java public class Gui { ... ... ... } // PanelA.java public class PanelA { ... ... ... () { JPanel pnl = new JPanel();
// Gui.java
public class Gui {
...
...
...
}
// PanelA.java
public class PanelA {
...
...
... () {
JPanel pnl = new JPanel();
pnl.setBackground(Color.ORANGE);
JButton btn = new JButtn("Show Panel B");
pnl.add(btn);
}
public void actionPerformed(ActionEvent ae) {
...
}
}
// PanelB.java
public class PanelB {
...
...
... () {
JPanel pnl = new JPanel();
pnl.setBackground(Color.GREEN);
JButton btn = new JButtn("Show Panel A");
pnl.add(btn);
}
public void actionPerformed(ActionEvent ae) {
...
}
}
我发现很多例子都是这样做的,但是所有的JPanel都是在同一个类中创建的,使用JButtons作为字段,以便侦听器可以访问它们。我试图编辑这些示例,但没有成功。
对不起,我的英语不好,提前谢谢你 试试这样的方法: 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. ...
}
}
编辑…首先要意识到的是,上面看到的两个面板都不需要根据给定的代码扩展面板。为什么他们要扩展JPanel?上面的代码中没有扩展。。。在我的回答中,有一个问题……如何在PanelA/PanelB的侦听器中使用Gui.java中的卡?当我单击按钮1 show panel b时,我得到了NullPointerException。什么是访问超级类卡片字段的正确方法?