Zum Inhalt springen

repaint() - Methode Verständnisfrage!


Timberlake

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D 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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...