繁体   English   中英

使用JButton访问另一个类中的另一个框架

[英]Using JButton to access Another Frame in another class

大家好,我是Java新手。 我正在尝试将我的“下一个” JButton重定向到另一个类中的另一个框架(DriversLicenseApplicant)。 问题是,当我单击“下一步”按钮时,它将持续打开我的程序当前正在执行的框架MainInfo。 您能帮我提供我的代码吗? 谢谢你们。 :)

    final JButton btnNext = new JButton("Next");
    btnNext.setBounds(824, 623, 89, 51);
    contentPane.add(btnNext);
        btnNext.addActionListener(
                new ActionListener(){


        public void actionPerformed(ActionEvent e) {
            if (btnNext.isSelected()) {
            DriversLicenseApplicant frame = new DriversLicenseApplicant();
            MainInfo objMain = new MainInfo();
                    frame.setVisible(true);
                        objMain.setVisible(false);



        }
        }
    });

怎么了

关键线在这里

1  DriversLicenseApplicant frame = new DriversLicenseApplicant();
2  MainInfo objMain = new MainInfo();
3  frame.setVisible(true);
4  objMain.setVisible(false);

在此块之前,您有一帧this (在Java中,你指的是你所处的对象this )。 this是开放的。

在第1行,您创建了一个新的frame ,将总框架增加到两个。 frame被隐藏。

在第2行,创建第三个框架objMain 它是在同一个班this ,但它是一个不同的实例。 (有关类和实例之间的区别的说明,请参见StackOracle网站 )。 objMain是隐藏的,但是this是开放的。

在第3行,打开frame 现在, thisframe都打开了,而objMain被隐藏了。 由于Java的关注规则, this可以保持关注。

在第4行,隐藏objMain 这没有效果,因为objMain从来没有打开过。 你还有3张,双方thisframe是开放的, this仍然具有焦点。

如何修复

将这些行替换为

DriversLicenseApplicant frame = new DriversLicenseApplicant();
frame.setVisible(true);
this.setVisible(false);

将打开新框架并隐藏到当前框架。

但我认为可能存在潜在的设计问题。 每个程序通常应该只有一帧。 您可能要考虑在第二个窗口中使用JDialog 您也可以将它们放在同一帧中,并使用CardLayout在它们之间切换。 还可以更改类以扩展JPanel ,因此可以将它们放在窗口的内容窗格中。 它增加了灵活性,并且对于您选择的任何一种方法都很有用。

还有一件事

我不禁提到JButton的绝对位置。 请使用布局 他们是你的朋友。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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