質問: 数日前にjdk1.8.0_172からjdk-10.0.1に変更しました。 ルック&フィールをNimbusにしていますが、jdk1.8.0_172ではJPopupMenuのJMenuとMenuItemの背景色をColor.ORANGEと指定してJMenu、MenuItem共に以下のコードで問題なく表示できていました。 try { for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { UIManager.setLookAndFeel(info.getClassName()); UIManager.getLookAndFeelDefaults().put("PopupMenu[Enabled].backgroundPainter",new FillPainter(Color.ORANGE)); break; } } } catch (Exception e) { } その後ルック&フィールはNimbusのままでjdk-10.0.1に変更し実行してみるとJMenu、MenuItemの背景色はグレー表示となっていました。 そこでネット検索で「Java JPopupMenu Nimbus BackgroundColor」として調べ、サンプルコードを参考に上記のコードを削除して以下のようにコードを書いてみたところJMenu、MenuItemの背景色をColor.ORANGEで表示することは出来ましたが、MenuItemの上端と下端がグレー表示となります。 JPopupMenuに以下のコードを追加 //ポップアップメニューの背景色をオレンジ色に public void paintComponent(final Graphics g) { g.setColor(Color.ORANGE); g.fillRect(0,0,getWidth(), getHeight()); } MenuItemに以下のコードを追加 //ポップアップメニューのメニューアイテムの背景色をオレンジ色に setOpaque(true); setBackground(Color.ORANGE); MenuItemの上端と下端をColor.ORANGEとして表示するにはどうしたら良いのか教えてください。 どうかよろしくお願いします。
回答: 試してないけど、上端と下端はborderではないのか? borderは(これまで通りなら)メソッドが切られてて、そこで描画してる。