假设您有JCheckBox
想要用作开/关指示符。您使用setEnabled(false)
禁用JCheckBox
上的鼠标点击。但是setEnabled(false)
也会使checkBox和checkBox的文本变灰。有没有办法自定义setEnabled(false)
,以便不会发生灰化?
如果那是不可能的,唯一的解决方案是自定义ButtonModel
吗?
答案 0 :(得分:5)
您可以继承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) {
}
}
答案 1 :(得分:2)
扩展JCheckBox
会覆盖setEnabled
方法,并将CustomJCheckBox
传递给期望JCheckBox
作为参数的任何代码。这应该使您不必重复实现复选框中的所有其他内容,就像实现ButtonModel一样。
我对你正在使用的复选框感到有点困惑 - 它没有启用,但你仍然希望根据其他参数检查是否出现?在这种情况下,为什么要使用输入元素?
答案 2 :(得分:2)
已经请求更改已禁用的JCheckbox中的文本颜色,这仍然是Sun Bug数据库中的一个未解决的问题:
[6289684] Way to change the color of disabled JCheckbox text
请查看错误详细信息以获取解决方法。
答案 3 :(得分:0)
您可以自定义Button UI来执行此操作。