Repaint() unterdrücken/überspringen

Hallo, ihr Leute.

Ich habe ein Frage an euch, welche ich mir bis jetzt noch nicht beantworten konnte.


Nun zum Problem:

Ich programmiere gerade einen Routenplaner mit dem Dijkstra-Algorithmus.
Das alles wird als Applet in einem Browser dargestellt.
Der Algorithmus, das Zeichnen und alles andere funktioniert.
Doch wenn man nun das Fenster vom Browser oder vom Applet-Viewer verändert, also vergrößert/verkleinert, bewegt, etc., wird Repaint() ausgelöst.


Nun meine Frage:

Wie unterdrückt man Repaint(), wenn das Browserfenster oder der AppletViewer verändert wird?


Meine Teil-Problemlösung:

Einen ComponentListener mit den jeweiligen Methoden implementieren und dort Repaint() irgendwie unterdrücken oder überspringen.
Doch bis jetzt fand ich noch keine Lösung.


Ich habe mich schon durch mehrere Foren, auch dieses Forum, und Google-Artikel gesucht, aber nichts gefunden.
Sofern ich falsch gesucht habe, wäre es nett einen Link zu dem anderem Thread zu posten.


Vielen Dank schon Mal.

Ruben K.
 

André Uhres

Top Contributor
Hallo Ruben,

herzlich willkommen bei "java-forum.org"!

Bei Größenänderungen wird gewöhnlich neu gemalt. Das ist kein repaint(), sondern ein Malantrag, der vom System ausgelöst wird und somit nicht unterdrückt werden kann. Falls das stört, ist dein Malcode wohl nicht in Ordnung.

Gruß,
André
 

xehpuk

Top Contributor
Hey,

es gibt [JAPI]java.awt.Component#setIgnoreRepaint(boolean)[/JAPI], was teilweise
Code:
repaint()
unterdrückt. Das wird hier aber nicht genügen. Da muss man wohl einen boolean einführen und diesen in einer überschriebenen
Code:
paint(Graphics)
beachten.

Dein Problem hast du aber nicht wirklich genannt, nämlich: Warum willst du
Code:
repaint()
verhindern? Womöglich ist dein Ansatz nicht ganz korrekt.
 
Hallo Ruben,

herzlich willkommen bei "java-forum.org"!

Danke sehr!

Bei Größenänderungen wird gewöhnlich neu gemalt. Das ist kein repaint(), sondern ein Malantrag, der vom System ausgelöst wird und somit nicht unterdrückt werden kann. Falls das stört, ist dein Malcode wohl nicht in Ordnung.

Gruß,
André

Gut, also kein repaint(), jetzt weiß ich schon mal mehr.
Doch diesen Malauftrag muss man ja irgendwie unterdrücken/überspringen können, WENN das Fenster z.B. verschoben wird, oder?

Hey,

es gibt [JAPI]java.awt.Component#setIgnoreRepaint(boolean)[/JAPI], was teilweise
Code:
repaint()
unterdrückt. Das wird hier aber nicht genügen. Da muss man wohl einen boolean einführen und diesen in einer überschriebenen
Code:
paint(Graphics)
beachten.

Dein Problem hast du aber nicht wirklich genannt, nämlich: Warum willst du
Code:
repaint()
verhindern? Womöglich ist dein Ansatz nicht ganz korrekt.

Ich möchte repaint() unterdrücken, weil, wenn ich zwischen z.B. dem AppletViewer und einem anderen Fenster hin- und herwechsle, automatisch neu gezeichnet wird, aber ich auch nach dem Fensterwechsel die Linien noch brauche.
 

GUI-Programmer

Top Contributor
Dann rufst du wahrscheinlich irgendwo getGraphics(); auf, was man außer bei einem Bild niemals tun sollte. Siehe dazu mal das Zeichneb in Swing Tutorial hier im AWT, Swing und SWT Forum dazu an.
 

André Uhres

Top Contributor

Neue Themen


Oben