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