为JMenu中的JPopupMenu定制透明背景

最近研究了很久这个问题,从LookAndFeel到继承JPopupMenu或者JMenu都搞不定。

其实替换背景的话,只要在JMenuUI中设置Opaque(false) 再将背景设置透明就可以看到PopupMenu的背景了,

然后再在PopupMenuUI中将popupmenu和parent都设置成Opaque就可以做透明背景了,但是位置不对啊!!!

因为我会在按钮的四周添加阴影,JMenuItem浮在阴影上很难受有木有。

这个问题纠结了我大概几天的样子。

在追查JPopupMenu的构建,布局的折腾过程中,终于发现了一线曙光,

虽然不能替换JMenu的JPopupMenu对象,但是可以通过在MenuUI中修改layout达到想要的效果,

其默认的Layout是在调试中发现的javax.swing.plaf.basic.DefaultMenuLayout,

是一个专属的布局Layout继承自BoxLayout,修改这里就可以按照喜好布局了

原文地址:https://www.cnblogs.com/TLightSky/p/3191691.html