2016-05-26 12 views
1

Wenn ich zu meinem JMenuItem neuen Symbol oder ImageIcon hinzufüge, wird der Text die gleiche Farbe wie das Symbol.Falsche Anzeige des Menüeintrags

Example Screenshot

Mein Code:

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; 
     } 

    }; 
} 

Antwort

2
Graphics2D g2 = (Graphics2D)g; 

Nicht einfach werfen die Graphics Objekt zu einem Graphics2D.

Alle Änderungen, die Sie am Objekt Graphics2D vornehmen, werden vom Objekt Graphics beibehalten.

erstellen Statt eine separate Grafikobjekt, das Sie vorübergehend anpassen:

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

// do custom painting 

g2.dispose(); 

Jetzt werden die Änderungen nur auf die individuelle Malerei Code anzuwenden.

Verwandte Themen