但加入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()); |
對於JFrame或JDialog類別,可使用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
沒有留言:
張貼留言