AWT Graphics2D getClip gibt null zurück

darman96

Aktives Mitglied
Hallo,

ich bin grad etwas ratlos.
In der Funktion rufe ich setClip auf bei meinem Graphics2D objekt

Java:
public void updateToolBar() {
     int iconDim = 32;
     getComponentByName("toolBar").removeAll();

     for(Nodes node : ((TreePanel<T>)getComponentByName("treePanel")).getMostUsed()) {
       TreeElement element = new TreeElement(node, new Point(0, 0));
       BufferedImage image = new BufferedImage(iconDim, iconDim, BufferedImage.TYPE_4BYTE_ABGR);
       Graphics2D g2d = image.createGraphics();

       g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
       g2d.setClip(0, 0, iconDim, iconDim);
       g2d.translate(iconDim / 2, iconDim / 2);
       g2d.scale(iconDim / 100, iconDim / 100);

       element.paint(g2d);

       g2d.dispose();

       ImageIcon icon = new ImageIcon(image);
       ToolBarItem item = new ToolBarItem(node, icon);
       item.setName("toolBarItem" + node.toString());
       componentMap.put(item.getName(), item);
       // Add item to ToolBar
       getComponentByName("toolBar").add(item);
     }

   }

dann will ich hier getClip aufrufen, bekomme aber nur ein null zurück...

Java:
protected void paint(Graphics2D g2d) {
     Shape clip = g2d.getClip();
   
     if(isHovered) {
       g2d.setColor(backgroundColor.brighter());
     } else {
       g2d.setColor(isSelected ? backgroundColor.darker() : backgroundColor);
     }
     g2d.fill(renderBounds);
 
     if(node.type.ornament != null) {
       //g2d.setClip(ornamentArea);
       //g2d.clip(clip);
       g2d.setColor(isSelected ? ornamentColor.darker() : ornamentColor);
       //Rectangle bounds = ornamentArea.getBounds();
       g2d.fill(renderOrnament);
       //g2d.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);
     }
     g2d.setClip(renderBounds);
     g2d.clip(clip);
     g2d.setClip(clip);
   }

Hat jemand ne Idee woran das liegen könnte?

Gruß darman96
 
Zuletzt bearbeitet von einem Moderator:
prüfe mal per Ausgabe auf der Konsole ob dein Graphics Objekt ggf. noch nicht vollständig initialisiert ist.

Es ist durchaus denkbar das dein Graphics Objekt noch nicht komplett durchgereicht worden ist eh du per getClip(); darauf zugreifen willst.

schieb dazu das ganze mal in eine if abfrage

Java:
if( g != null){

....dein Code
}
else{
  System.out.println("g == null !");
}
 
Okay es scheint an dem
Java:
g2d.scale(...);
zu liegen.
Wenn ich das auskommentiere wird der clip richtig zurück gegeben.
 

Neue Themen


Zurück
Oben