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: java , 窗口

Post navigation

HotNews Pro主題修改前后篇文章模塊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM