我正在根据一些参数和当前选择的菜单项在弹出菜单中修改一些 JMenuItems 的外观。
这是一段伪代码(伪代码,因为它没有显示所有复杂的流程,而只显示了设置菜单项属性的相关部分):
JMenuItem item= new JMenuItem("text");
Border border= calculateBorderForItem();
item.setBorder(border);
[...]
item.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
Color bg= calculateBackgroundForItem();
item.setBackground(bg);
}
}
这适用于默认的 Metal LaF 以及 JGoodies PlasticXP LaF,但不适用于 Nimbus LaF。Nimbus 只是忽略了所有这些属性。
当我设置时,背景被绘制,item.setOpaque(true)
但边框仍然没有出现。如何强制 Nimbus 使用我的自定义边框?