通常情况下,当您使用
在WinForms(.NET)中,这个问题可以通过将背景颜色“重置”为非覆盖默认值,即
setEditable(false)
或setEnabled(false)
时,JTextField的背景/前景颜色会变成“灰色”。然而,如果之前通过setBackground(color)
(例如为white
)设置了背景颜色,则对setEnabled
或setEditable
的调用将不再影响背景颜色。而是被先前设置的颜色覆盖。在WinForms(.NET)中,这个问题可以通过将背景颜色“重置”为非覆盖默认值,即
Color.Empty
来解决。这将导致文本框恢复标准行为。然而,在JTextField中我没有找到类似的“默认值”。那么,如何将JTextField恢复为使用默认颜色,并在禁用或只读时自动切换颜色呢?前景颜色也存在类似的问题。
textField.setBackground(UIManager.getColor(...)); textField.setEditable(false);
,但是如果你先调用setEditable(false)
,背景色仍然是白色。不过无论如何,它还是能够正常工作的。 - dialer