Timberlake Geschrieben 16. Februar 2009 Teilen Geschrieben 16. Februar 2009 Hallo, ich habe folgendes Verständnisproblem - vielleicht kann mir jemand helfen! Programm: (nicht vollständig) Datei 1: import java.awt.*; class Spiel { public static void main( String[] args ) throws Exception { PaintWindow w = new PaintWindow(); Deck deck = new Deck(); w.Bild = deck.getCard(9).getImage(); w.repaint(); } } Datei 2: import java.awt.*; class PaintWindow extends Frame { Image Bild; private int time; PaintWindow() { setSize(600, 400); setVisible(true); time = 0; } public void paint(Graphics g) { System.out.println("Hier wird das Bild gezeichnet"); g.drawImage(Bild, 200, 200, this); time = time + 1; System.out.println(time); } } Beim starten des Programms wird die Main-Methode der Datei1 aufgerufen. Dann wird ein PaintWindow Objekt angelegt und es soll ein Bild gezeichnet werden, indem die Methode repaint() aufgerufen wird. Soweit alles in Ordnung und das Bild erscheint auch im Frame. jetzt hab ich mir gedacht, ich lass mal einen Zähler mitlaufen (siehe Datei2). Ich bin davon ausgegangen, dass der Zähler dann in der Konsole 1 zeigt, aber der Zähler zählt bis 100!?!? Folgerung von mir - die Methode wird 100 mal aufgerufen?!? Wieso ist das so? Kann mir das jemand erklären? Vielen Dank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
White Geschrieben 16. Februar 2009 Teilen Geschrieben 16. Februar 2009 Das Gerüst was im Hintergrund arbeitet ruft halt wärend dem Aufbauen des Fenster schon die repaint Methode auf. Aber war da nicht mal was das man bei AWT nur auf Canvasobjekte zeichnen soll ? Bei Swing soll man auf JPanels zeichnen. Musst du mal bei Sun schauen was da war. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Timberlake Geschrieben 20. Februar 2009 Autor Teilen Geschrieben 20. Februar 2009 sonst keiner ne passende Antwort?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
VaNaTiC Geschrieben 21. Februar 2009 Teilen Geschrieben 21. Februar 2009 Wie White schon sagte, würde ich auch vom Code her sagen, dass das paint(Graphics) durchaus mehrfach aufgerufen wird. Aber halt für Dich eventuell zu oft, Stichwort doublebuffering. Interessant wäre ob auch 100 System.out. kommen Denn das sollten sie, wenn in time 100 sind. Auch wäre es sehr komisch, wenn time immer 100 wäre. Das sollte irgendeine Zahl sein. Nämlich genau so oft, wie eben das Fenster (auch vom System her) neu gezeichnet werden will oder muss. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ksg9-sebastian Geschrieben 23. Februar 2009 Teilen Geschrieben 23. Februar 2009 Wie der Name schon sagt: Die Methode wird immer aufgerufen wenn ein Neuzeichnen der Komponente benötigt wird - bei move, resize u.s.w. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.