gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:39:16 26 4
gpt4 key购买 nike

我有一个具有自定义外观和感觉的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com