Hallo ihr Java-Spezialisten!
Also ich habe folgendes Problem:
Ich soll für meinen Lehrer in Java ein Programm schreiben, dass zeigt, wie verschiedene Sortieralgorithmen arbeiten, sprich:
Ich zeichne in ein Koordinatensystem die Punkte x/y wobei x die Feldindizes sind und y die eigentlichen Werte. Am Anfang ist also Wirrwar und dann kommt am Ende ein „linearer“ Graph heraus. Das funktioniert auch soweit, dass der Anfang und das Ende angezeigt werden. Allerdings werden die Zwischenschritte nicht angezeigt. Ich benutze ein Canvas mit der Methode repaint() in einem Frame (kein JFrame) und mit AWT. Quelltext kann ich nicht wirklich posten, es sind über 1000 Zeilen.
Ich habe schon alles mögliche mit sleep() und wie auch immer probiert es werden immer nur Anfang und Ende aber keine Zwischenschritte angezeigt, auch wenn ich zwichendurch 1 Sekunde warten lasse, bevor er weitermacht. Wie kann ich das ändern? Was mache ich falsch?
Vielen Dank für eure Hilfe,
Häuptling JAVA
Das ist bei mir ewig her, hab ich keine Ahnung von.
Du könntest es mal mit Multitreading probieren.
Dann könnte sich ein Thread die Werte sortiert und der Andere die GUI aktualisiert. Multithreading bedeutet, dass sich nicht ein Programmcode abgearbeitet wird, sondern zwei Parallel. Verbessert mich falls ich etwas falsches sage.
Sorry, da kan ich Dir leider nicht weiterhelfen.
Gruß
Du solltest die onPaint-Methode deiner Zeichnefläche überschreiben und dort drin zeichnen (also eine eigene Klasse ableiten).
Der Vorteil davon ist, dass die OnPaint immer wieder aufgerufen wird und man sich nicht ums neuzeichnen kümmern muss.
Ansonsten hast du noch die Möglichkeit nach dem Zeichnen das Object „invalide“ zu setzen bzw. ein Neuzeichnen zu forcieren.
Aber ich empfehle dir die erste Methode.
lg Markus