いくつかのパラメーターと現在選択されているメニュー項目に基づいて、ポップアップメニューのいくつかのJMenuItemの外観を変更しています。
これは少し疑似コードです(疑似、すべての複雑なプロセスフローを表示するのではなく、メニュー項目のプロパティの設定に関連する部分のみを表示するため):
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);
}
}
これは、デフォルトのMetalLaFおよびJGoodiesPlasticXP LaFで非常にうまく機能しますが、NimbusLaFでは機能しません。Nimbusは、これらすべてのプロパティを無視します。
設定すると背景がペイントされますがitem.setOpaque(true)
、それでも境界線が表示されません。Nimbusにカスタムボーダーの使用を強制するにはどうすればよいですか?