假设您有一个JCheckBox
要用作开/关指示器的。您用于setEnabled(false)
禁用鼠标点击JCheckBox
。但setEnabled(false)
也会使复选框和复选框的文本变灰。有没有办法进行自定义setEnabled(false)
,以免发生变灰?
如果这是不可能的,那么唯一的解决方案是定制一个ButtonModel
?
您可以继承 JCheckBox 并覆盖 processMouseEvent/processKeyEvent 以不做任何事情。
public class ReadOnlyCheckBox extends JCheckBox {
public ReadOnlyCheckBox (String text, boolean selected) {
super(text,selected);
}
protected void processKeyEvent(KeyEvent e) {
}
protected void processMouseEvent(MouseEvent e) {
}
}
扩展JCheckBox
将允许您覆盖该setEnabled
方法,并将您传递CustomJCheckBox
给任何期望 aJCheckBox
作为参数的代码。这应该使您不必重新实现复选框中的所有其他内容,就像实现 ButtonModel 一样。
我对您使用该复选框的用途感到有些困惑——它未启用,但您仍希望根据其他参数显示或不显示检查?在这种情况下,为什么要使用输入元素?
已请求更改禁用的 JCheckbox 中的文本颜色,并且在 Sun Bug 数据库中仍然是一个未解决的问题:
[6289684] 更改禁用的 JCheckbox 文本颜色的方法
查看错误详细信息以获取解决方法。
您可以自定义Button UI来执行此操作。