[ Java ] AWT 與 Swing 相關問題

AWT與Swing有些操作上的差異

筆記內容主要為AWT與Swing相關開發問題





 1.使用JFrame時背景顏色沒辦法顯示


使用AWT物件時要設定背景顏色,指令如下

frm.setBackground(Color.red);

但是使用JFrame時,需要多一條程式碼

jfrm..getContentPane().setBackground(Color.red);

如此一來才能夠顯示背景顏色。


原因是,在Swing視窗裡,若是要把按鈕、標籤之類的物件加入視窗中

必須先取得內容層 ( getContentPane() )

藉此加入物件或更改顏色。

( 詳細解說可翻閱 Java 2 教學手冊 第四版 / 洪維恩 著 ---- 23-7 之說明。 )



----------------------------------------------------------------------------------------------

2. 使用JLabel時無法設定背景顏色 ( setBackground(Color.xxxx) )

需要先將 setOpaque() 穿透效果設為true

這樣 setBackground() 才能如預期地顯示

另外,更改字體顏色則是使用 setForeground()


----------------------------------------------------------------------------------------------

3. 為什麼我自訂的JPanel元件無法設定背景顏色?

原本設計這個JPanel元件主要目的是用來實作貪食蛇的活動範圍

需要在初始化時畫出格線,並設定背景顏色

但是依照以往使用 setBackground(Color.xxxx) 卻無法顯示背景顏色

搜尋Google之後發現

我覆寫的 paint(Graphics g) 方法需要保留 super.paint(g)

如此才能正確的顯示背景顏色

原因似乎是需要父類別建構子當中的一些程序

這日後需要調查清楚。





沒有留言:

張貼留言

Layout疑難雜症筆記

 這裡記錄一些Layout時View元件比較特殊的狀況與處理方式,內容會陸續增加。