使用JButton访问另一个类中的另一个帧

时间:2013-08-16 04:33:30

标签: java jframe jbutton actionlistener

大家好我是java的新手。我正在尝试将我的“Next”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 个答案:

答案 0 :(得分:0)

发生了什么

关键线在这里

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属于同一类,但它是一个不同的实例。 (可以在on Stackon Oracle's website找到类和实例之间差异的说明。 <{1}}已隐藏,但objMain已打开。

在第3行,您打开this。现在,framethis都已打开,而frame则被隐藏。由于Java's focus rulesobjMain保持关注。

在第4行,您隐藏this。这没有任何效果,因为objMain从未打开过。您仍然有3个框架,objMainthis都已打开,frame仍有焦点。

如何解决

替换这些行
this

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

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

还有一件事

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