![](/img/trans.png)
[英]Why does my JFrame stay empty, if I subclass JPanel and JFrame?
[英]JFrame and why stay running
為什么要創建一個JFrame,然后程序仍然運行,直到(即)我用窗口的小“退出按鈕”將其關閉?
我尋找這個答案,但失敗了。 我猜到的唯一一件事是,當我執行new JFrame()
它就像一個特殊的new
,它在EDT中保留了對對象的引用,因此它將始終被引用(即使是匿名的“ new”)也並非如此。將被垃圾收集器刪除。 然后,一旦觸發Windows關閉事件,該對象便被取消引用並銷毀。
試試, yourFrame.setCloseOperation(JFrame.EXIT_ON_CLOSE)
。
它保持運行的原因是所謂的事件分派線程一直在后台運行,並且只要您有非守護程序線程在運行,應用程序就不會終止。 從線程的文檔:
Java虛擬機啟動時,通常只有一個非守護線程(通常調用某些指定類的名為main的方法)。 Java虛擬機繼續執行線程,直到發生以下任一情況:
- 已調用類Runtime的退出方法,並且安全管理器已允許進行退出操作。
- 不是守護程序線程的所有線程都已死,要么通過從調用返回到run方法,要么拋出傳播到run方法之外的異常。
不是從“ gui-thread”開始的JFrame的創建 。 當該框架變得可見並且可能需要調度事件時,將啟動此線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.