首页 > 解决方案 > 禁用时如何使 JCheckBox L&F 保持启用状态(true)?

问题描述

我有一个 Java 应用程序,它有用于显示对象状态的 JCheckBoxes。用户不能/不应更改这些复选框。

所以,很明显,我做到了:

checkbox.setEnabled(false);

但是,现在刻度/图标图像变灰了。

我希望禁用的 JCheckBox 看起来更好,就像它启用但不允许用户更改其状态。

我怎样才能做到这一点?如何使禁用的 CheckBox 上的 TICK 图像看起来更好(更高的对比度)?

Ilustration 示例,请注意每个复选框的 UI 有何不同

标签: javaswingcheckbox

解决方案


我希望禁用的 JCheckBox 看起来更好,就像它启用但不允许用户更改其状态。

这对我说“只读” JCheckBox。在这种情况下,您需要提供一个ButtonModel阻止状态更改的参数。例如如何在 Swing 中制作只读的 JCheckBox?

我想实际更改 CheckBox 上的刻度图像/颜色

然后你需要使用JCheckBox#setSelectedIconandJCheckBox#setIcon以及JCheckBox#setDisabledIconandJCheckBox#getDisabledSelectedIcon方法来提供你自己的图标


推荐阅读