【发布时间】:2011-01-17 18:15:01
【问题描述】:
我的程序从带有 JFrame 中的文本字段的图片开始。我希望当用户输入时它会关闭图片 JFrame 并使用主程序打开另一个 JFrame。我试过了
processEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
在图像框架上,但它会关闭所有窗口。
【问题讨论】:
标签: java image swing netbeans-6.9
我的程序从带有 JFrame 中的文本字段的图片开始。我希望当用户输入时它会关闭图片 JFrame 并使用主程序打开另一个 JFrame。我试过了
processEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
在图像框架上,但它会关闭所有窗口。
【问题讨论】:
标签: java image swing netbeans-6.9
JFrame.setVisible 方法可用于根据参数隐藏或显示 JFrame,而 JFrame.dispose 实际上会“销毁”该框架,方法是关闭它并释放它使用的资源。在这里,如果您打算重新打开相框,您可以在相框上调用setVisible(false),或者如果您不再打开相框,请在相框上调用dispose(),这样您的程序可以释放一些内存。然后在主框架上调用setVisible(true) 使其可见。
【讨论】:
您也可以使用此代码
例如
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
【讨论】:
也许如果您将图片 JFrame 的 default close operation 设置为 EXIT_ON_CLOSE 之外的其他值,也许是 DISPOSE_ON_CLOSE,您可以防止您的应用程序在第二个 JFrame 出现之前关闭。
【讨论】:
这篇文章有点老了,不过。
如果你这样初始化表单:
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 事件对其进行了测试)。
【讨论】:
这是我对这个问题的解决方案:
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 ");
}
}
【讨论】:
你也可以用这个:
opens_frame frameOld= new opens_frame();
frameOld.setVisible(true);
Closing_Frame.setVisible(false);
Closing_Frame.dispose();
【讨论】:
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
}
【讨论】:
我一直在寻找同样的东西,发现使用“this”是最好和最简单的选择。
您可以使用以下代码:
this.dispose();
【讨论】:
对于netbeans,使用当前对象的引用和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
}
【讨论】:
先调用它
new Window().nextjframe.setVisible(true);
thisjframe.setVisible(false);
【讨论】:
if(username.equals("gaffar")&&password.equals("12345"))
{
label.setText("Be ready to continue");
//Start of 2nd jframe
NewJFrame1 n=new NewJFrame1();
n.setVisible(true);
//Stop code for ist jframe
NewJFrame m=new NewJFrame();
m.setVisible(false);
dispose();
}
【讨论】: