大家好我是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);
}
}
});
答案 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 Stack和on Oracle's website找到类和实例之间差异的说明。 <{1}}已隐藏,但objMain
已打开。
在第3行,您打开this
。现在,frame
和this
都已打开,而frame
则被隐藏。由于Java's focus rules,objMain
保持关注。
在第4行,您隐藏this
。这没有任何效果,因为objMain
从未打开过。您仍然有3个框架,objMain
和this
都已打开,frame
仍有焦点。
用
替换这些行this
将打开新框架并隐藏到当前框架。
但我认为可能存在潜在的设计问题。每个程序通常只有一个框架。您可能希望在第二个窗口中使用JDialog。您也可以将它们保存在同一帧中,并使用CardLayout在它们之间切换。同时更改类以扩展JPanel,以便将它们放在窗口的内容窗格中。它增加了灵活性,它对您选择的任何方法都很有用。
我不禁提到JButton的绝对定位。请使用layouts。他们是你的朋友。