java - 为什么 JPopupMenu 中的 JLabel 不尊重其外观和感觉?

标签 java swing look-and-feel

我有一个具有自定义外观和感觉的 Java 应用程序,用户可以在其中在浅色和深色模式之间切换。我们拥有的功能之一是继承自 JPopupMenu 类的右键单击弹出菜单。我们添加到菜单的第一件事是 JLabel:

add( new JLabel( "<html><i> " + field.desc + "</i><br/>field = " + field.getName() + "</html>" ) );

现在,我们已经更改了 JLabels 的 L&F,它们正确地出现在应用程序样式中的很多位置。我们修改了:

Label.background
Label.foreground

此外,菜单项的 L&F 也已通过以下方式修改:

PopupMenu.border
PopupMenu.foreground
PopupMenu.background

无论如何,我们还修改了 MenuItems 上的类似属性。

问题是弹出菜单内出现的标签似乎不尊重背景颜色。在浅色和深色模式之间切换时,前景色会发生变化,但背景色不会变化。我进行了屏幕抓取并观察了背景颜色设置的颜色,但在我们的 L&F 设置中找不到任何匹配的颜色,这似乎表明它只是使用了默认的 L&F(可能是 Windows)。

这可能是一个错误吗?或者我没有设置一些我应该设置的 L&F 属性?我似乎在 Google 领域找不到任何人遇到同样的问题,因此我们将不胜感激。

最佳答案

我应该知道这就是答案:JLabel 设置为透明,因此它的背景不被尊重。像这样改变代码很好地解决了问题:

JLabel fieldInfo = new JLabel( "<html><i> " + field.desc + "</i><br/>field = " + field.getName() + "</html>" );
fieldInfo.setOpaque( true );

关于java - 为什么 JPopupMenu 中的 JLabel 不尊重其外观和感觉?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1500833/

相关文章:

java - 具有类特定属性的最佳解决方案

java - 自定义 JComboBox 上箭头的位置(位于底部中心)

java - Swing 高性能图表库

java - 创建可点击的 JButton 矩阵

java - Swing - 带合成器的自定义按钮

java - JavaFX UI 组件的 Nimbus 式外观

cocoa - 无限文档的滚动条?

java - 包命名约定

java - 构建后生成的目标文件不包含必须存在的所有已编译类

javafx 通过代码点击按钮