繁体   English   中英

如何从不同班级的小组回到主班小组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM