我正在创建一个自定义scala组件,需要在(100,100)处取消选中图标并在(200,100)处选中图标,这与swing使用的图标相同。我的代码在下面工作,但看起来很奇怪,因为我需要创建虚拟复选框。有没有一种标准的方法来实现这一目标? (不,我不是要尝试将组件添加到容器等等......这不是布局管理问题......我正在尝试创建自定义组件)
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
答案 0 :(得分:4)
您不应在paintComponent
中定义组件。在组件的构造函数中定义它们,以便每次重新绘制组件时都不会重新定义它们。
如果您不希望用户更改复选框的值,标准操作就是使用setEnabled(false)
。
另外,您是否尝试过使用scala.swing
包?