求助关于java的setDefaultCloseOperation() 的位置问题!

自己摸索搞不懂,我把setDefaultCloseOperation() 放在 while(jf.isShowing()) 之后就不会执行

 int x = 700

        int y = 300

        int width = 500

        int height = 500

        JFrame jf = new JFrame("测试");

        jf.setBounds(x, y, width, height); // 窗口的横竖位置和横竖长度

        jf.setVisible(true);

//        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        while(jf.isShowing()) ;

        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

但是放在前面的任何位置就可以。
我猜测是要在关闭窗口之前能读到这个语句,才能够执行
99LRC歌词,但是我查不到相关的内容

上面删代码的时候,傻傻把一些分号删了
然后下面这种情况,就是while (jf.isShowing()) 里要有输出语句(无论输出什么),才会退出程序,如果while (jf.isShowing())里内容是空的或者是非输出语句就不会退出程序,这是为什么

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这是对窗体退出时默认行为的设置
正确的做法应该是在 
jf.setVisible(true);
之前就先设置好

把isShowing方法改成同步方法,或者把isShowing内部的控制变量改为volatile
多线程时,isShowing没有同步的话,while (jf.isShowing())有可能一直取不到isShowing的最新情报(不能及时刷新 主存信息),所以会死循环,而加上System.out.print("");,该方法是同步方法,线程一定程度上会刷新主存,所以能取到 isShowing的最新情报,不会死循环
LZ可以多参考一些多线程共享变量的资料,或者了解一下volatile变量的作用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "setDefaultCloseOperation" 方法是 Java Swing 库中的一个方法,用于设置窗口在关闭时所执行的操作。常用的参数有三个: - JFrame.EXIT_ON_CLOSE:窗口关闭时程序退出。 - JFrame.HIDE_ON_CLOSE:窗口关闭时程序隐藏,不退出。 - JFrame.DISPOSE_ON_CLOSE:窗口关闭时程序销毁,但不退出。 示例代码: ``` JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ``` ### 回答2: Java中的setDefaultCloseOperation()是Frame类的一个方法,用于设置窗口关闭时的操作。它接受一个整数参数来表示关闭时的操作类型。 可以使用以下几个参数值来设置窗口关闭时的操作类型: - JFrame.EXIT_ON_CLOSE:表示关闭窗口时应该终止程序的运行。这是默认值,也是最常用的选项。当用户关闭窗口时,程序将终止执行。 - JFrame.HIDE_ON_CLOSE:表示关闭窗口时应该隐藏窗口,而不是终止程序的运行。当用户关闭窗口时,窗口将被隐藏,但程序继续执行。 - JFrame.DISPOSE_ON_CLOSE:表示关闭窗口时应该释放窗口资源,但不终止程序的运行。当用户关闭窗口时,窗口将被释放,但程序继续执行。 - JFrame.DO_NOTHING_ON_CLOSE:表示关闭窗口时不执行任何操作。当用户关闭窗口时,什么都不会发生,程序继续执行。 使用setDefaultCloseOperation()方法将上述参数值之一传递给它,即可设置窗口关闭时的操作类型。 例如,如果要设置窗口关闭时终止程序的运行,可以使用以下代码: ``` frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ``` 这将使窗口在关闭时终止程序的运行。 总结,setDefaultCloseOperation()方法用于设置窗口关闭时的操作类型,包括终止程序的运行、隐藏窗口、释放窗口资源以及不执行任何操作。根据实际需要选择适当的参数值即可。 ### 回答3: Java中的setDefaultCloseOperation(int operation)是用于设置窗口关闭操作的方法。它接受一个整数参数operation,用来指定窗口的关闭方式。 常见的几种关闭方式如下: 1. JFrame.EXIT_ON_CLOSE(0):设置当窗口关闭时,程序将会退出。 2. JFrame.HIDE_ON_CLOSE(1):设置当窗口关闭时,窗口将会被隐藏,但是程序不会退出。 3. JFrame.DISPOSE_ON_CLOSE(2):设置当窗口关闭时,窗口将会被销毁,释放资源,但是程序不会退出。 4. JFrame.DO_NOTHING_ON_CLOSE(3):设置当窗口关闭时,不采取任何操作,需要手动通过其他方式关闭窗口。 可以通过调用setDefaultCloseOperation方法来设置窗口的关闭操作,例如: ```java JFrame frame = new JFrame("窗口标题"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 将窗口关闭操作设置为退出程序 ``` 通过传入不同的整数参数值来设置不同的关闭方式。 需要注意的是,setDefaultCloseOperation方法必须在显示窗口之前调用,以确保设置的关闭操作生效。 总之,setDefaultCloseOperation方法是用于设置Java窗口关闭操作的方法,通过设置不同的整数参数值,可以实现不同的关闭方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值