Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关闭对话框窗口的可选方式_Java_Swing_Jdialog - Fatal编程技术网

Java 关闭对话框窗口的可选方式

Java 关闭对话框窗口的可选方式,java,swing,jdialog,Java,Swing,Jdialog,我正在使用一个定制的JFrame在我正在开发的Java应用程序中实现一个简单的对话框 用户按下窗口中的“应用”按钮后,它应关闭 最传统的方法是什么?setVisible(false)在类内部是最好的方法吗?还有什么方法更值得推荐吗?这取决于你想要达到的目标。将窗口设置为不可见只会将其隐藏,但它仍将在后台运行(JFrame/InternalFrame)。您可以使用JDialog(以JOptionPane为例)创建临时框架,当单击其中一个按钮时,这些框架将真正关闭。您还可以在用户关闭窗口时检索所选选

我正在使用一个定制的JFrame在我正在开发的Java应用程序中实现一个简单的对话框

用户按下窗口中的“应用”按钮后,它应关闭


最传统的方法是什么?
setVisible(false)
在类内部是最好的方法吗?还有什么方法更值得推荐吗?

这取决于你想要达到的目标。将窗口设置为不可见只会将其隐藏,但它仍将在后台运行(JFrame/InternalFrame)。您可以使用JDialog(以JOptionPane为例)创建临时框架,当单击其中一个按钮时,这些框架将真正关闭。您还可以在用户关闭窗口时检索所选选项(此处:)。您还可以通过触发事件关闭窗口来强制关闭窗口,如下所示:

Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(
                    new WindowEvent(frame, WindowEvent.WINDOW_CLOSING)
             )

例如,在actionlistener内部。

这取决于您试图实现的目标。将窗口设置为不可见只会将其隐藏,但它仍将在后台运行(JFrame/InternalFrame)。您可以使用JDialog(以JOptionPane为例)创建临时框架,当单击其中一个按钮时,这些框架将真正关闭。您还可以在用户关闭窗口时检索所选选项(此处:)。您还可以通过触发事件关闭窗口来强制关闭窗口,如下所示:

Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(
                    new WindowEvent(frame, WindowEvent.WINDOW_CLOSING)
             )

例如,在actionlistener内部。

关闭JFrame时,可以执行多个操作

假设你有一个JFrame

JFrame frame = new JFrame();
这一个在关闭时退出JVM

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这个只是隐藏了JFrame

frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
这一个处理JFrame

frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
当Java虚拟机(VM)中的最后一个可显示窗口被释放时,VM可能会终止

默认情况是什么也不做

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

关闭JFrame时可以执行多个操作

假设你有一个JFrame

JFrame frame = new JFrame();
这一个在关闭时退出JVM

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这个只是隐藏了JFrame

frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
这一个处理JFrame

frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
当Java虚拟机(VM)中的最后一个可显示窗口被释放时,VM可能会终止

默认情况是什么也不做

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

要在Swing like或中关闭窗口,您有两个选项

调用dispose() 只需调用方法:

释放此窗口使用的所有本机屏幕资源 子组件及其所有拥有的子组件。即资源 因为这些组件将被销毁,它们消耗的任何内存都将被销毁 返回到操作系统,并将其标记为不可发布

例如:

frame.dispose();
dialog.dispose();

发送一个
窗口关闭事件
您可以按如下方式发送新邮件:

frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
dialog.dispatchEvent(new WindowEvent(dialog, WindowEvent.WINDOW_CLOSING));
如果窗口已附加一个标签,则将通知它。如果设置了框架(或对话框)的默认关闭操作,则将执行此操作。可能的关闭操作包括:

  • (在
    WindowConstants
    中定义):不要做任何事情; 要求程序处理窗口关闭中的操作 注册的WindowListener对象的方法
  • (在
    窗口常量中定义):自动隐藏
    调用任何已注册的WindowListener对象后的帧
  • (在WindowConstants中定义):自动隐藏和 在调用任何已注册的WindowListener后处理帧 对象
  • (在
    JFrame
    中定义,不适用于
    JDialog
    ):使用系统退出方法退出应用程序。仅在应用程序中使用此选项

要关闭Swing like中的窗口,您有两个选项

调用dispose()
只需调用方法:

释放此窗口使用的所有本机屏幕资源 子组件及其所有拥有的子组件。即资源 因为这些组件将被销毁,它们消耗的任何内存都将被销毁 返回到操作系统,并将其标记为不可发布

例如:

frame.dispose();
dialog.dispose();

发送一个
窗口关闭事件
您可以按如下方式发送新邮件:

frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
dialog.dispatchEvent(new WindowEvent(dialog, WindowEvent.WINDOW_CLOSING));
如果窗口已附加一个标签,则将通知它。如果设置了框架(或对话框)的默认关闭操作,则将执行此操作。可能的关闭操作包括:

  • (在
    WindowConstants
    中定义):不要做任何事情; 要求程序处理窗口关闭中的操作 注册的WindowListener对象的方法
  • (在
    窗口常量中定义):自动隐藏
    调用任何已注册的WindowListener对象后的帧
  • (在WindowConstants中定义):自动隐藏和 在调用任何已注册的WindowListener后处理帧 对象
  • (在
    JFrame
    中定义,不适用于
    JDialog
    ):使用系统退出方法退出应用程序。仅在应用程序中使用此选项

JOptionPane
JDialog
有什么问题?要关闭对话框或框架吗?@MadProgrammer关闭一个小jframe
JOptionPane
JDialog
有什么问题吗?要关闭对话框或框架吗?@MadProgrammer关闭一个小jframe谢谢:)为此,我只使用
dispose()
+1如果/如果屏幕上已经有一个JFrame/JDialog/JWindow可见(可以通过setVisible(false)隐藏),请注意其他情况如果有最后一个指示灯,最后一个指示灯终止当前JVM谢谢:)为此,我将使用
dispose()
+1如果/如果屏幕上已经有一个JFrame/JDialog/JWindow可见(可以通过setVisible隐藏(false)),请注意其他情况如果有最后一个指示灯,则最后一个指示灯终止当前JVM