1

我正在根据一些参数和当前选择的菜单项在弹出菜单中修改一些 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 使用我的自定义边框?

4

1 回答 1

2
  • Nimbus LaF默认忽略setBackground,setForeground等。

  • Nimbus LaF默认情况下永远不要忽略setBackground, setForeground, in Xxx(Cell)Renderer(不是与您的问题有关)


有两种方法(通过覆盖)

于 2013-03-27T11:36:00.573 回答