Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

JPopupMenuのMenuItemの背景色の指定について

数日前に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として表示するにはどうしたら良いのか教えてください。
どうかよろしくお願いします。

1

回答

240

閲覧

1件の回答

評価

0

試してないけど、上端と下端はborderではないのか?
borderは(これまで通りなら)メソッドが切られてて、そこで描画してる。

回答する

ログインしていません。

ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 アカウントをお持ちでない方は会員登録を行ってください。

ユーザ名匿名