gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:22:19 25 4
gpt4 key购买 nike

我需要一个简单的示例,说明如何使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com