gpt4 book ai didi

java - 如何从不同类别的面板返回主类别面板?

转载 作者:行者123 更新时间:2023-12-01 09:09:03 26 4
gpt4 key购买 nike

我有两个类(class),一个是主类(class),另一个是专业类(class)。主类有介绍性的面板,进一步展示了专业类的面板。专业类(class)的第二个面板有“Home”按钮,需要显示主类(class)面板。请告诉我如何使“主页”按钮起作用?

class proMain extends JPanel {
JPanel pan2 = new JPanel();
JButton b1, b2, b3;
CardLayout lay = new CardLayout();

public void pshow() {

// First Panel
pan.setBackground(Color.red);
b1 = new JButton("Next");
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (ae.getActionCommand().equals("Next")) {
pan2.setVisible(true);
pan.setVisible(false);
}
}
});

pan.add(b1);

// Second Panel
b2 = new JButton("Previous");
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (ae.getActionCommand().equals("Previous")) {
pan.setVisible(true);
pan2.setVisible(false);
}
}
});
b3 = new JButton("Home");
b3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (ae.getActionCommand() == "Home") {
//
}
}
});
pan2.setBackground(Color.cyan);
pan2.add(b2);
pan2.add(b3);
pan.setVisible(true);
pan2.setVisible(false);
add(pan);
add(pan2);
}
}

上面的类是proMain类,主类是:

public class proDis {
public static void main(String[] args) {
JFrame fr = new JFrame("CrdLay");
JPanel pan3 = new JPanel();
JButton b = new JButton("Next");
CardLayout cl = new CardLayout();
fr.setLayout(cl);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (ae.getActionCommand().equals("Next")) {
pan3.setVisible(false);
proMain pm = new proMain();
pm.pshow();
pm.setLayout(cl);
fr.add(pm);
pm.setVisible(true);
}
}
});
pan3.setBackground(Color.gray);
pan3.add(b);
fr.setSize(100, 300);
fr.setVisible(true);
fr.add(pan3);
}
}

最佳答案

您正在尝试使用CardLayout,这是正确的方法。但是,您的实现不正确。

您的代码的问题是您没有使用 CardLayout 的方法来控制显示哪个面板。 CardLayout 支持方法。类似于 next(...)previous(...) 来依次浏览所有面板和方法 show(...) > 显示特定面板。

因此,当您将每个面板添加到布局时,首先要做的就是为面板命名。然后更改代码以使用上述方法来控制显示哪个面板。无需考虑任何面板的可见性,这是​​ CardLayout 的工作。

阅读 Swing 教程中关于 How to Use CardLayout 的部分了解更多信息和工作示例。

关于java - 如何从不同类别的面板返回主类别面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41037690/

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