我知道这听起来很像已经发布的很多问题,但请继续阅读;这个问题看似相似,但已有许多提供的解决方案都无法解决。
我目前在使用Java和Eclipse,在OS X和Windows上进行编写。在OS X上,我有一个JButton,它从.setEnabled(true)变为.setEnabled(false)。当它被禁用时,我通过.setBackground(someColor)改变其背景颜色。在此期间,前景(字体)颜色不会改变,保持黑色。这正是我想要的,它现在非常完美。
然后就出现了Windows的问题。与上述情况相同,我有一个JButton,它从.setEnabled(true)变为.setEnabled(false)。我还通过.setBackground(someColor)改变了它的背景。然而,当这发生时,前景(字体)颜色并不保持不变——它从黑色变为浅灰色。这非常不方便,使得新的背景颜色很难阅读。
所以问题是:我如何更改禁用的JButton的前景颜色?
我已经尝试了以下方法:
button.setForeground(Color.BLACK);
button.setText(<html><font color = black>BUTTON</font></html>);
UIManager.put("Button.disabledText", Color.BLACK);
UIManager.getDefaults().put("Button.disabledText", Color.BLACK);
UIManager.put("Button.foreground", Color.BLACK);
UIManager.getDefaults().put("Button.foreground", Color.BLACK);
所有的方法都没有起作用。我还尝试了以下方法:
- 将OS X导出为.jar文件,然后在Windows中使用它。但是Windows字体颜色仍然改变。
- 编译一个针对OS X的.app文件和一个针对Windows的.exe文件。问题仍然存在。
是否有其他解决方案我可能忽略了?
目前,我只能将字体保持不美观的灰色,并更改背景(出于某种原因,可以通过.setBackground()轻松更改)以适应它的颜色。
那么为什么OS X和Windows之间似乎存在这种颜色差异呢?我喜欢OS X的颜色方案,但我不想为本质上相同的程序编写2个代码集。
我该怎么办?
JToggleButton
呢? - Azad