2016-05-26 8 views
1

JMenuItem新しいアイコンまたはImageIconに追加すると、テキストはアイコンと同じ色になります。メニュー項目の表示が正しくない

Example Screenshot

マイコード:

JMenuButton red = new JMenuItem("Red", getIcon(Color.RED)); 

private Icon getIcon(Color color){ 
    return new Icon() { 

     @Override 
     public void paintIcon(Component c, Graphics g, int x, int y) { 
      Graphics2D g2 = (Graphics2D)g; 
      g2.translate(x,y); 
      g2.setPaint(color); 
      g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
        RenderingHints.VALUE_ANTIALIAS_ON); 
      g2.fillOval(0, 2, 10, 10); 
      g2.translate(-x,-y); 
     } 

     @Override 
     public int getIconWidth() { 
      return 14; 
     } 

     @Override 
     public int getIconHeight() { 
      return 14; 
     } 

    }; 
} 

答えて

2
Graphics2D g2 = (Graphics2D)g; 

だけGraphics2DGraphicsオブジェクトをキャストしないでください。

Graphics2Dオブジェクトに行った変更は、Graphicsオブジェクトによって保持されます。

代わりに別のグラフィックスを使用すると、一時的にカスタマイズすることができ、そのオブジェクトを作成:

Graphpics2D g2 = (Graphics2D)g.create(); 

// do custom painting 

g2.dispose(); 

を今すぐ変更が唯一のカスタムペイントコードに適用されます。

関連する問題