[英]How to be back on main class panel from panels of different 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(...)
方法show(...)
特定的面板。
因此,要做的第一件事是在将每个面板添加到布局时给面板命名。 然后更改您的代码以使用上述方法来控制显示哪个面板。 无需处理任何面板的可见性,这是CardLayout
的工作。
阅读Swing教程中有关如何使用CardLayout的部分, 以获取更多信息和工作示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.