java - 在之前更改背景颜色后禁用时,JTextField 的背景颜色不会变为 'grayed out'

标签 java swing background jtextfield

通常当您使用 setEditable(false)setEnabled(false) 时,JTextField 的背景/前景色会变成“灰色”。但是,如果之前使用 setBackground(color) 设置了背景颜色(例如 white),则调用 setEnabledsetEditable 将不再影响背景颜色。相反,它会被之前设置的颜色覆盖。

在 WinForms (.NET) 中,这是通过将背景颜色“重置”为非覆盖默认值来解决的,即 Color.Empty。这将导致文本框恢复标准行为。但是,我还没有为 JTextField 找到类似的“默认值”。如何将 JTextField 恢复为使用默认颜色并在禁用或设置为只读时自动切换颜色?前景色也有类似的问题。

最佳答案

您需要将字段的背景颜色重置为其默认值。

默认的 UI 委托(delegate)正在寻找 UIResource 以确定用于给定字段的正确阴影(基于安装的外观和感觉)。

您可以使用以下方法重置背景颜色:

JTextField#setBackground(UIManager.getColor("TextField.background"))

或者,您可以为您的自定义背景构建自定义 UIResource

看看ColorUIResource了解更多详情。

关于java - 在之前更改背景颜色后禁用时,JTextField 的背景颜色不会变为 'grayed out',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15693497/

相关文章:

java - 在已实现的抽象方法中调用父类(super class)方法

java - 如何在 Oracle 8.x 系列中以编程方式替换字符

android - 如何在COCOS2D android中设置背景?

ios - 当用户终止我的应用程序时,我的 iOS 应用程序是否可以继续运行代码?

html - 使用 CSS 或 Canvas 生成背景图像

java - 如何在Android中查找单个乐器的和弦

java - 如何将 ArrayList/lists/iterables 参数传递给 JSF1.2 自定义组件

java - 如何让我的 TreeCellRenderer 填充我的 JTree?

java - 可编辑 JCombobox 上的 FocusListener 未触发

java - Java BoxLayout中单个字符在Y轴上对齐偏心