2014年2月9日 星期日

Java Window Decoration Style

Window Decoration Style為JDK 1.4新增的功能,主要是讓以Java Swing所開發的應用程式,更加Java化。在未使用Window Decoration Style之前,不論使用何種Look and Feel,其Java視窗程式皆以作業系統的視窗為其外框,以Microsoft Windows作業系統為例:
但加入Window Decoration Style之後,其視窗外框將搭配Metal Look and Feel成為以下的樣式,更加Java化此功能僅支援Metal Look and Feel或繼承MetalLookAndFeel之類別
Window Decoration Style是以javax.swing.JRootPane類別的setWindowDecorationStyle()方法設定,其中參數windowDecorationStyle為以下的常數值,代表視窗外框樣式,預設為JRootPane.NONE
  • JRootPane.FRAME:視窗樣式。
  • JRootPane.COLOR_CHOOSER_DIALOG:顏色對話盒樣式。
  • JRootPane.FILE_CHOOSER_DIALOG:檔案對話盒樣式。
  • JRootPane.ERROR_DIALOG:錯誤訊息對話框樣式。
  • JRootPane.INFORMATION_DIALOG:一般資訊對話框樣式。
  • JRootPane.PLAIN_DIALOG:純文字訊息對話框樣式。
  • JRootPane.QUESTION_DIALOG:詢問訊息對話框樣式。
  • JRootPane.WARNING_DIALOG:警告訊息對話框樣式。
  • JRootPane.NONE:無外框樣式。
如下圖所示:
以及無外框樣式:
由於使用Window Decoration Style之後,其視窗的圖像將由原有的Java圖像變為空白圖像,欲改變此圖像,可使用JFrame類別的setIconImage()方法,例如:


// 取得目前之Class Loader
ClassLoader cl = this.getClass().getClassLoader();

// 設定視窗圖像
this.setIconImage(new ImageIcon(
  cl.getResource("images/java.png")).getImage());


對於JFrameJDialog類別,可使用setDefaultLookAndFeelDecorated()的方法設定Window Decoration Style執行方式如下:


// JFrame類別
JFrame frame = new JFrame();
frame.setUndecorated(true);
frame.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);

// JDialog類別
JDialog dialog = new JDialog();
dialog.setUndecorated(true);
dialog.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);


如下圖所示:
【參考資料】

[1] Java Platform, Standard Edition 7 API Specification.
[2] 黃嘉輝,深入研究Java Swing (第二版)。


© Chia-Hui Huang


沒有留言:

張貼留言