我的程序以JFrame中带有文本字段的图片开头。我想在用户类型启动时关闭图片JFrame并打开另一个JFrame与主程序。我试过了
processEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
在图像框架上,但它会关闭所有窗口。
答案 0 :(得分:7)
方法JFrame.setVisible
可用于根据参数隐藏或显示JFrame,而JFrame.dispose
实际上会“破坏”框架,关闭框架并释放它使用的资源。在这里,如果你打算重新打开它,你可以在相框上调用setVisible(false)
,或者如果你不打算再次打开它,可以在相框上调用dispose()
,这样你的程序就可以释放一些内存。然后,您可以在主框架上调用setVisible(true)
以使其可见。
答案 1 :(得分:2)
如果您将图片JFrame的default close operation设置为除EXIT_ON_CLOSE
之外的其他内容(可能是DISPOSE_ON_CLOSE
),则可以阻止您的应用在第二个JFrame出现之前关闭。
答案 2 :(得分:2)
您也可以使用此代码
例如
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
答案 3 :(得分:1)
以下是我对此问题的解决方案:
public void actionPerformed(ActionEvent e) {
String userName = textField.getText();
String password = textField_1.getText();
if(userName.equals("mgm") && password.equals("12345")) {
secondFrame nF = new secondFrame();
nF.setVisible(false);
dispose();
}
else
{
JOptionPane.showMessageDialog(null, " Wrong password ");
}
}
答案 4 :(得分:1)
这篇文章虽然有点陈旧但仍然存在。
如果您初始化表单:
JFrame firstForm = new JFrame();
firstForm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
firstForm.setSize(800, 600);
firstForm.setLocationRelativeTo(null);
firstForm.setVisible(true);
例如,通过按钮创建或打开另一个表单:
JFrame secondForm = new JFrame();
secondForm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
secondForm.setSize(800, 600);
secondForm.setLocationRelativeTo(null);
secondForm.setVisible(true);
this.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
这将在不退出程序的情况下处理和销毁第一个窗口
关键是设置setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)
它还引发了事件(我已经用WindowClosing
事件对其进行了测试。
答案 5 :(得分:0)
你也可以用这个:
opens_frame frameOld= new opens_frame();
frameOld.setVisible(true);
Closing_Frame.setVisible(false);
Closing_Frame.dispose();
答案 6 :(得分:0)
private void closeTheCurrentFrameAndOpenNew(java.awt.event.ActionEvent evt){
dispose();//To close the current window
YourClassName closeCurrentWindow = new YourClassName();
closeCurrentWindow.setVisible(true);//Open the new window
}
答案 7 :(得分:0)
我正在寻找相同的东西,发现使用"这个"是最好,最简单的选择。
您可以使用以下代码:
this.dispose();
答案 8 :(得分:0)
对于netbeans,请使用当前Object和setVisible(false);
的引用
例如
private void submitActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
this.setVisible(false);//Closing the Current frame
new login().setVisible(true);// Opening a new frame
}