我有一个带有多行文本的java swing按钮,我使用<HTML>
标签如下:
button.setText("<html><center><font color = white>Reset<br>Diagram</font></html>");
但是当我设置button.setEnabled(false);
时,文字颜色变为浅蓝色,而其余按钮没有<HTML>
禁用时标签的文本颜色为灰色。
我尝试使用 UIManager,但它仅适用于没有 <HTML>
的按钮标签:
UIManager.put("Button.disabledText", new ColorUIResource(Color.GRAY));
有什么办法可以解决这个问题吗?
最佳答案
使用 html formatting 禁用 Swing 组件使用通过键“textInactiveText”从 UIManager 获取的统一前景色。该 key 是作为 JDK-4783068 的修复而引入的- 进一步细化以允许在 JDK-7150926 中拒绝每个组件禁用的颜色.
显然该值取决于LaF - 由Metal(实际上是海洋主题)配置的浅蓝色(仅?)。应用程序可以替换默认设置,例如使用标准按钮的禁用文本颜色
UIManager.put("textInactiveText", UIManager.get("Button.disabledText"));
或硬编码颜色
UIManager.put("textInactiveText", new ColorUIResource(Color.GRAY));
对于 Metal,我们还可以实现并使用自定义主题,该主题从其 getInactiveSystemTextColor()
返回颜色。
关于java - 使用 HTML 文本更改禁用 Java 按钮的文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75290674/