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

标签 java swing

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

面板A:

enter image description here

面板B:

enter image description here

文件结构示例:

// 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 都是在同一个类中创建的,并以 JButton 作为字段,以便监听器可以访问它们。我尝试编辑这些示例,但没有成功。 抱歉我的英语不好,提前谢谢您!

最佳答案

尝试这样的事情:

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. ...
    }
}

已编辑...

关于java - 管理使用不同类创建的 Java CardLayout JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45677253/

相关文章:

java - 如何在 JPA 中设置默认架构

Java Swing JTextArea : Problem displaying Myanmar Text

java .contains() 查找数组

java - @JSonIgnore 注释的等效代码设置是什么?

java - 如何失去 JMenuItem 焦点或关闭 JPopupMenu

java - 在 headless (headless)环境中测试 Swing 元素 (gitlab CI)

java - 从 jtextfield 中删除最后一个字符

java - 文本中的 Eclipse WindowBuilder 故障

java - 为什么我无法访问类数组索引

java - 使用线程 1 打印数字 1,2,3,使用线程 2 打印数字 4,5,6,使用线程 3 打印数字 7,8,9,使用线程 1 打印数字 10,11,12