2011-09-29 55 views
0

我正在創建一個自定義scala組件,需要在(100,100)處有一個未選中的圖標,並在(200,100)處選中了與之相同的圖標。我的代碼如下,但看起來很奇怪,因爲我需要創建虛擬複選框。有沒有一個標準的方法來完成這個? (不,我不是要添加組件容器等等...這不是一個佈局管理問題......我想創建一個自定義組件)在自定義JComponent中繪製複選框圖標:Scala


val comp = new JComponent() { 


override def paintComponent(g:Graphics) { 
    val cb1 = new JCheckBox() 
    val cb2 = new JCheckBox() 
    cb2.setSelected(true) 
    val icon = UIManager.getIcon("CheckBox.icon") 
    icon.paintIcon(cb1, g, 100,100) 
    icon.paintIcon(cb2, g, 200,100) 
    } 
} 
val f = new JFrame 
f.getContentPane().setLayout(new BorderLayout) 
f.getContentPane().add(comp , BorderLayout.CENTER) 
f.pack 
f.show 

回答

4

你不應該在paintComponent內不定義組件。在組件的構造函數中定義它們,以便每次重繪組件時不會重新定義它們。

如果您不希望用戶更改複選框的值,標準的做法是使用setEnabled(false)

另外,你有沒有嘗試過使用scala.swing包?