[英]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
,但它是一个不同的实例。 (有关类和实例之间的区别的说明,请参见Stack和Oracle网站 )。 objMain
是隐藏的,但是this
是开放的。
在第3行,打开frame
。 现在, this
和frame
都打开了,而objMain
被隐藏了。 由于Java的关注规则, this
可以保持关注。
在第4行,隐藏objMain
。 这没有效果,因为objMain
从来没有打开过。 你还有3张,双方this
和frame
是开放的, this
仍然具有焦点。
将这些行替换为
DriversLicenseApplicant frame = new DriversLicenseApplicant();
frame.setVisible(true);
this.setVisible(false);
将打开新框架并隐藏到当前框架。
但我认为可能存在潜在的设计问题。 每个程序通常应该只有一帧。 您可能要考虑在第二个窗口中使用JDialog 。 您也可以将它们放在同一帧中,并使用CardLayout在它们之间切换。 还可以更改类以扩展JPanel ,因此可以将它们放在窗口的内容窗格中。 它增加了灵活性,并且对于您选择的任何一种方法都很有用。
我不禁提到JButton的绝对位置。 请使用布局 。 他们是你的朋友。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.