Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

repaint() - Methode Verständnisfrage!

Empfohlene Antworten

Veröffentlicht

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

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.

sonst keiner ne passende Antwort??

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.

Wie der Name schon sagt: Die Methode wird immer aufgerufen wenn ein Neuzeichnen der Komponente benötigt wird - bei move, resize u.s.w.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.