paint() wird zweimal ausgeführt

Status
Nicht offen für weitere Antworten.

timriddance

Mitglied
Hallo zusammen

Vielleicht ist das eine dumme Frage, aber ich bin ein ziemlicher Anfänger.

Ich habe das Programm:

Java:
package chapter5;
import javax.swing.JApplet;
import java.awt.Graphics;

/**
 * @author xxx
 * Applet that is used for drawing faces
 */
public class PO16 extends JApplet {

	/**
	 * 
	 * @param canvas
	 */
	public void paint(Graphics canvas) {
		PO16_Face testface = new PO16_Face();
		testface.generate(canvas, 5, 10, 1);
		System.out.println("blabla");
	}

}

PO16_Face ist eine Klasse, die ein Gesicht repräsentiert, mit PO16_Face.generate() werden ein paar einfache Zeichnungen mit der Graphics-Klasse ausgeführt.

Als ich nun etwas, in diesem Fall "blabla" an die Konsole ausgeben wollte, merkte ich, dass dies zweimal ausgegeben wird. Ist dies normal und was ist der Grund dafür?

Danke schon einmal
 
paint wird unbestimm oft aufgerufen, je nachdem ob der Browser das für richtig hält,
ob andere Fenster das überblenden usw.,
das Programm darf nicht von der Anzahl der paints abhängig sein
 
In einem systemausgelösten Malvorgang, bittet das System eine Komponente, ihren Inhalt darzustellen, normalerweise aus einem der folgenden Gründe:
  • Die Komponente wird zum erstenmal sichtbar auf dem Bildschirm abgebildet.
  • Die Komponente wird in der Größe verändert.
  • Die Komponente wurde beschädigt und muß repariert werden (zum Beispiel wurde etwas verschoben, das vorher die Komponente verdeckte, und ein vorher verdeckter Teil der Komponente wird sichtbar).
Möglicherweise treten zu Beginn die ersten beiden Fälle nacheinander auf, was den wiederholten Besuch der paint()-Methode erklären könnte. Ansonsten ist paint(), wie gesagt, eine sogenannte "callback" Methode ("Wiederholungsbesuch"). Das heisst, daß das System die paint()-Methode wiederholt besuchen darf, wann immer es das für angebracht hält.
 
heißt callback nicht eher was anderes? 😉
Rückruffunktion ? Wikipedia
Hier ist es offenbar in dem Sinn zu verstehen, daß eine bestimmte Methode jedesmal wieder aufgerufen wird (also einen Wiederholungsbesuch bekommt), wenn etwas geschieht, das sie interessiert. Das kann eins der drei oben erwähnten Ereignisse sein, oder eine interne Zustandsänderung der betroffenen Komponente (repaint Antrag der Anwendung).
 
@timriddance

Lies das Tutorial "Zeichnen in Swing"!

Das beschreibt u.a. genau dein Problem.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben