zoukankan      html  css  js  c++  java
  • JFrame中setDefaultCloseOperation的参数含义

    实例1:一个空的java窗口

    // JFrameDemo1.java

    import javax.swing.*;     //使用Swing类,必须引入Swing包

    public class JFrameDemo1{

      public staticvoid main( String args[]) {

             //定义一个窗体对象f,窗体名称为"一个简单窗口"        

             Jframe  f = new JFrame("一个简单窗口");

             //设置窗体左上角与显示屏左上角的坐标,     

             f.setLocation(300,300);           //离显示屏上边缘300像素,里显示屏左边缘300像素

             f.setSize(300,200);            //设置窗体的大小为300*200像素大小

             f.setResizable(false);       //设置窗体是否可以调整大小,参数为布尔值

             //设置窗体可见,没有该语句,窗体将不可见,此语句必须有,否则没有界面就没有如何意义了

    f.setVisible( true);   

    //用户单击窗口的关闭按钮时程序执行的操作

             f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);

     }

    }

    程序运行结果生成一个窗体。

    可以根据程序代码的注释,依次修改相应的方法参数查看效果。

    setDefaultCloseOperation(int operation):设置用户在此窗体上发起 "close" 时默认执行的操作。方法中的参数解释如下:

     为“0”或DO_NOTHING_ON_CLOSE:

    (在 WindowConstants 中定义):不执行任何操作;要求程序在已注册的WindowListener 对象的 windowClosing 方法中处理该操作。

    比如实例程序代码中更改为f.setDefaultCloseOperation(f. DO_NOTHING_ON_CLOSE);或者f.setDefaultCloseOperation(0),然后查看效果,可以发现窗口无法关闭,下面是相同测试方法,不再解释了。

     为“1”或HIDE_ON_CLOSE

    调用任意已注册的 WindowListener 对象后自动隐藏该窗体。此时没有关闭程序,只是将程序界面隐藏了。可以打开任务管理器,可以看到一个叫“java.exe”的进程(如果调试运行了多个java程序,则会看到多个“java.exe”的进程),如果此时用EditPlus测试程序,会发现当单击窗口的关闭按钮关闭窗口后,却无法再次对程序进行调试,因为程序线程没有关闭,在任务管理器中关闭java.exe(如果有多个“java.exe”的进程,则先都关闭掉,再来测试该问题)基础后,EditPlus才可以重新编译改程序。

    为“2”或DISPOSE_ON_CLOSE

    调用任意已注册 WindowListener 的对象后自动隐藏并释放该窗体。但继续运行应用程序,释放了窗体中占用的资源。

     为“3”EXIT_ON_CLOSE(在 JFrame 中定义):使用 System exit 方法退出应用程序。仅在应用程序中使用。结束了应用程序。

    默认情况下,该值被设置为 HIDE_ON_CLOSE。

    当注释掉实例中的f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);语句时,起到的效果和f.setDefaultCloseOperation(f. HIDE_ON_CLOSE); 或者f.setDefaultCloseOperation(1);一样。

     

    setDefaultCloseOperation();是用来设定窗口被关闭时(比如点击了右上角的”x”)的行为。参数有:

    DISPOSE_ON_CLOSE:隐藏当前窗口,并释放窗体占有的其他资源。在窗口被关闭的时候会dispose这个窗口。

    EXIT_ON_CLOSE:结束窗口所在的应用程序。在窗口被关闭的时候会退出JVM。

    如果程序没有其他线程在运行,当所有窗口都被dispose后,JVM也会退出。

    代码举例:

    1 import javax.swing.JFrame;
    2 import static javax.swing.JFrame.*;//引入JFramed的静态常量
    3  
    4 public class Example {
    5 public static void main(String[] args) {
    6     JFrame window1 = new JFrame("窗口A");//创建带标题的窗口
    7     JFrame window2 = new JFrame("窗口B");
    8     window1.setBounds(600, 100, 180, 100);//左,上,宽,高
    9     window2.setBounds(260, 100, 180, 100);
    10     window1.setVisible(true);
    11     window2.setVisible(true);
    12     window1.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    13     window2.setDefaultCloseOperation(EXIT_ON_CLOSE);
    14     }
    15 }

    运行如图:

    Java窗口

    单击窗口A的关闭按钮,只有窗口A被关闭。

    单击窗口B的关闭按钮,两个窗口都被关闭。

    Tags: ,

    Post navigation

  • 相关阅读:
    iOS 8以后 定位手动授权问题
    IOS int NSInteger NSNumber区分
    Java基础知识(JAVA集合框架之List与Set)
    Java基础知识(JAVA基本数据类型包装类)
    Java基础知识(JAVA中String、StringBuffer、StringBuilder类的区别)
    Java基础知识(重载和覆盖)
    Java基础知识(抽象类和接口)
    host文件
    天猫页面显示错位
    专题8:javascript函数详解
  • 原文地址:https://www.cnblogs.com/-ROCKS/p/5830884.html
Copyright © 2011-2022 走看看