Ich erzeuge von meiner Componente ein Bild mit diesen Code
BufferedImage im = new BufferedImage(comp.getWidth(), comp.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics g = im.createGraphics();
comp.paint(g);
if(comp instanceof JRootPane)
((JRootPane)comp).getRootPane().paint(g);
was ich dann auch abspeichere
Bisher hat es wunderbar geklappt nur auf einmal malt er nurnoch die Hälfte, d.h. ich hab eine JRootPane welche ich malen will mit mehreren Componenten drauf und die Glasspane benutz ich auch zum Zeichnen.
Alle Componenten werden immer gezeichnet und landen wunderbar auch im Bild.
Aber seit kurzem gibt es Probleme mit den Sachen auf der Glasspane, die werden auf einmal nicht immer gezeichnet. Die Methoden und alles werden aufgerufen aber es kommt nichts ins Bild.
Das da stammt aus meinem Datenbankdesigner, lade ich ein Projekt andem ich gerade arbeite mit >20 Tabellen tritt das da auf
Nehm ich eins mit 3 Tabellen geht wieder alles, das wundert mich ja so
Die richtigen Referenzen wirst du ja immer noch benutzen.
Aber versuchs mal mit Java 1.5. Vielleichst gehts da.
Ich hatte vor Kurzem auch ein Problem mit Java 1.6, nach dem Versions-Downgrade ging dann wieder alles wie gewohnt.
ne da ändert sich nichts, ich denk auch nicht dass es daran liegt
ich vermute eher das Image wird nicht fertig gezeichnet bevor es geschrieben wird, weil angezeigt wird ja alles und die gleichen Methoden werden fürs Bild ja auch verwendet
aber dem widerspricht es weil wenn ich Tabellen Relationen lösch ist es immernoch
Leuchtet ein und würde es auch erklären…
Du verwendest BufferedImage. Leere mal den Puffer/Cache abschließend mit der flush()-Methode. Damit sollte der Rest des Puffers auch noch geschrieben werden.
Hängt halt davon ab, wann der Component capture gemacht wird.
Wenn die Component zu dem Zeitpunkt nicht sichtbar ist, dann musst du imo explizit einen setSize machen.
EDIT: Ich weiss nicht, ob’s einen Unterschied macht, aber versuch’s halt auch mal mit **print **statt paint.