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)
如此才能正確的顯示背景顏色
原因似乎是需要父類別建構子當中的一些程序
這日後需要調查清楚。
沒有留言:
張貼留言