2011-09-29 25 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包?