Swing怎么保证窗体对象的强引用? 比如在main方法里执行JFrame frame=new JFrame();frame.setVisible(true);这样主方法返回后frame不就失去引用了吗,为什么又不会被当做垃圾回收呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你不应该只看frame.setVisible(true);这一句代码你得关注以下new JFrame();发生了什么你还要知道有多线程的存在他既然显示出来了,就最少有一个线程还在运行,比如做一个简易画图程序,你画一下,他就显示一下,其实有一只画笔不断的操纵这个frame引用此时垃圾回收器有权利收回他吗? main()方法最后添加一句:frame.setDefaultCloseOperation(EXIT_ON_CLOSE);右上角不是有一个红色X吗,你单击它就销毁了 你的意思可能想使用frame.dispose(),那你就看看关于它的说明吧释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。 通过随后对 pack 或 show 的调用重新构造本机资源,可以再次显示 Window 及其子组件。重新创建的 Window 及其子组件的状态在移除 Window 的点上与这些对象的状态将是一样的(不考虑这些操作之间的其他更改)。注:当 Java 虚拟机 (VM) 中最后的可显示窗口被移除后,虚拟机可能会终止。 实际上就是说明了两层意思: 1.使用dispose()方法关闭窗体会释放该窗体的占用的部分资源,不过呢不是全部的,如上面说的,只是屏幕资源。2.使用dispose()方法关闭的窗体可以使用pack 或 show 方法恢复,并且可以恢复到dispose前的状态(呵呵~感觉好神奇的,一开始都不相信) 关于上面的还有几点要说明的就是:1.如果dispose掉最后的窗体(程序启动就显示的那个),程序将终止。2.在JDK1.5中,show方法已经过时,被setVisible(boolean)方法代替,不过,使用dispose()和setVisible()方法,在表象上没有任何区别,它们的实质区别在于setVisible方法仅仅隐藏窗体,而dispose方法是关闭窗体,并释放一部分资源。一些示例:http://blog.sina.com.cn/s/blog_4afe685f0100c7x8.html 郁闷的,HttpURLConnection通过POST访问WCF REST服务,100分送! Java初学者 vector里面包换多个hashtable,如何把这些K-V Pairs取出来 怎么保存CSDN论坛的网页哈 保存后是XML的 输入流 求高手指教:路径问题 哪能下到JDeveloper,最好带注册码的,谢谢 java 中 SOCKET 的ACCEPT函数有返回值吗?怎样返回才是正常的? How can I get current system datetime? 即时通讯 Spark 中使用 JWebBrowser问题? 环境变量 软件一些个必须要了解的东东
你不应该只看frame.setVisible(true);这一句代码
你得关注以下new JFrame();发生了什么
你还要知道有多线程的存在他既然显示出来了,就最少有一个线程还在运行,
比如做一个简易画图程序,你画一下,他就显示一下,其实有一只画笔不断的操纵这个frame引用此时垃圾回收器有权利收回他吗?
右上角不是有一个红色X吗,你单击它就销毁了
释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。 通过随后对 pack 或 show 的调用重新构造本机资源,可以再次显示 Window 及其子组件。重新创建的 Window 及其子组件的状态在移除 Window 的点上与这些对象的状态将是一样的(不考虑这些操作之间的其他更改)。
注:当 Java 虚拟机 (VM) 中最后的可显示窗口被移除后,虚拟机可能会终止。
实际上就是说明了两层意思: 1.使用dispose()方法关闭窗体会释放该窗体的占用的部分资源,不过呢不是全部的,如上面说的,只是屏幕资源。2.使用dispose()方法关闭的窗体可以使用pack 或 show 方法恢复,并且可以恢复到dispose前的状态(呵呵~感觉好神奇的,一开始都不相信)
关于上面的还有几点要说明的就是:1.如果dispose掉最后的窗体(程序启动就显示的那个),程序将终止。2.在JDK1.5中,show方法已经过时,被setVisible(boolean)方法代替,不过,使用dispose()和setVisible()方法,在表象上没有任何区别,它们的实质区别在于setVisible方法仅仅隐藏窗体,而dispose方法是关闭窗体,并释放一部分资源。一些示例:
http://blog.sina.com.cn/s/blog_4afe685f0100c7x8.html