Java:如何在打开另一个JFrame时关闭它?

时间:2011-01-17 18:15:01

标签: java image swing netbeans-6.9

我的程序以JFrame中带有文本字段的图片开头。我想在用户类型启动时关闭图片JFrame并打开另一个JFrame与主程序。我试过了

processEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));

在图像框架上,但它会关闭所有窗口。

9 个答案:

答案 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
}