加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为什么JVM在变量超出范围后不会销毁JFrame对象?

发布时间:2020-12-15 04:58:36 所属栏目:Java 来源:网络整理
导读:我正处于学习 Java的初级阶段. 在我读过的所有文档中,它都提到Java使用安全引用来访问对象而不是内存指针. 而且当方法返回时,其本地范围的变量符合垃圾收集的条件. 那么为什么在下面的代码中,在createFrame方法返回后,JFrame对象不会随窗口一起被销毁? impo
我正处于学习 Java的初级阶段.
在我读过的所有文档中,它都提到Java使用安全引用来访问对象而不是内存指针.
而且当方法返回时,其本地范围的变量符合垃圾收集的条件.

那么为什么在下面的代码中,在createFrame方法返回后,JFrame对象不会随窗口一起被销毁?

import javax.swing.*;

public class HelloJava {
    public static void main( String[] args ) {
        createFrame();
    }

    private static void createFrame() {
        JFrame frame = new JFrame( "Hello,Java!" );
        JLabel label = new JLabel( "Hello,Java!",JLabel.CENTER );
        frame.getContentPane().add( label );
        frame.setSize( 300,300 );
        frame.setVisible( true );
    }
}

不仅窗口是可见的,我可以在该窗口上执行所有操作,如拖动,最大化,最小化等.

解决方法

因为EDT现在正在运行.

有关详细信息,请参阅Concurrency in Swing&尤其:

> Initial Threads.

In standard programs,there’s only one such thread: the thread that invokes the main method of the program class.

> The Event Dispatch Thread.

Swing event handling code runs on a special thread known as the event dispatch thread. Most code that invokes Swing methods also runs on this thread.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读