2016-05-26 117 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; 

不要只投了Graphics對象到Graphics2D

您對Graphics2D對象所做的任何更改都將由Graphics對象保留。

而是創建一個單獨的圖形對象,您可以暫時定義:

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

// do custom painting 

g2.dispose(); 

現在,這些變化將只適用於自定義繪製代碼。