我在NetBeans中设计了两个JFrame。
当我点击“规则”按钮(即放在JFrame1上)时,它会打开第二个JFrame(但是JFrame2会打开JFrame1的窗口,这就是我不想要的)。 在第二个JFrame中有一个“关闭”按钮。但是当我单击此按钮时,我希望打开JFrame1并且它也正常工作,但JFrame2实际上没有关闭,而JFrame1正在JFrame2上出现。
简而言之,主要形式是JFrame1。当我点击JFrame1中的“规则”按钮时,它会在JFrame1上打开JFrame2,而在JFrame2中,当点击主窗体(即JFrame1)时会有一个“关闭”按钮,但它会通过JFrame2启动。
场景是JFframe1 - > JFrame2 - > JFrame1
现在我的问题是点击“规则”按钮后,应该关闭JFrame1并在屏幕上显示JFrame2,反之亦然。
答案 0 :(得分:8)
假设你的按钮有一个actionListener,点击“规则按钮”后输入:
JFrame1.dispose(); //Remove JFrame 1
JFrame2.setVisible(true) //Show other frame
然后尊重他们反对的反应
答案 1 :(得分:3)
像这样的Somethig应该在创建JFrame2的构造函数或方法上:
btnCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//call another method in the same class which will close this Jframe
CloseFrame();
}
});
这是关闭JFrame2的方法
public void CloseFrame(){
super.dispose();
}
答案 2 :(得分:1)
好吧,如果你已经有一个 actionListener,你应该添加这个:
JFrame1.dispose(); // This will close the frame
JFrame1
是框架的名称。
如果您想打开另一个框架,请添加:
JFrame2.setVisible(true); // This will put the other frame visible
答案 3 :(得分:0)
这对我有用(Frame1
被叫RegScreen
和Frame2
被叫MainScreen
):
RegScreen.this.setVisible(false);
new MainScreen().setVisible(true);
希望这有帮助:) Regscreen
是在启动时打开的原始框架。
答案 4 :(得分:0)
如果这不起作用,请尝试此
JFrame1.dispose(); //Remove JFrame 1
JFrame2.setVisible(true) //Show other frame
JFrame2.setVisible(true);
this.dispose();
答案 5 :(得分:0)
示例:
//btn event inside 1st JFrame/window
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
MainProgram.openResultsForm(); //MainProgram opens 2nd window
MainProgram.queryEntryForm.dispose(); //MainProgam closes this,
//the 1st window
}