Hallo,
ich steh hier grade vor einem großen Problem, es geht um folgendes:
Ich will ein Programm schreiben, mit dem man binäre Bäume darstellen kann.
Dazu habe ich ein JPanel als Zeichenfläche, auf dem ich den Baum per paintComponent zeichne und auf einem anderen JPanel verschiedene Buttons, um Knoten hinzuzufügen, zu entfernen etc.
Bisher funktioniert das auch super, mein Baum wird ohne Probleme gezeichnet.
Jetzt wollte ich mich daran machen, dass ganze zu animieren. Drückt der Benutzer z.B. "Search" soll per Animation die Navigierung durch den Baum gezeigt werden.
Jetzt kommt mein Problem:
Wie starte ich Animationen per JButton Knopfdruch bzw. per ActionListener-Event?
Ich dachte mir, ich rufe dazu einfach auf meiner Zeichenflächen-Klasse eine Methode auf, die die Animation ausführt. Also per Schleife die grafischen Elemente neu setzen und dann repaint aufrufen, solange bis die Animation zu Ende sein soll. Das Problem ist, das repaint() nicht dann ausgeführt wird, wenn ich es will.
Repaint() wird erst dann aufgerufen, wenn meine Methode zum Animieren durchgelaufen ist und somit die Animation auch schon längst vorbei ist. Nach der API liegt das wohl daran, dass repaint() erst ausgeführt wird, wenn alle aktuellen Events behandelt wurden. Da die Animationsmethode ja von einem Button-Event aufgerufen wurde, also hier erst, wenn die Methode vorbei ist.
Ich hatte dann probiert, die Animation direkt in der repaint()-Methode zu konstruieren, indem ich z.B. eine ArrayList mit den nötigen Infos für die Animation erstelle und auf diese dann zugegriffen wird. Leider zeichnet repaint() aber erst dann tatsächlich neu, wenn schon alles ausgeführt wurde.
Ich bin so langsam am verzweifeln, vermutlich ist das ein ganz häufiges Problem, aber ich konnte per Suche & Google nichts finden. Es wäre echt super, wenn mir da jemand helfen könnte.
ich steh hier grade vor einem großen Problem, es geht um folgendes:
Ich will ein Programm schreiben, mit dem man binäre Bäume darstellen kann.
Dazu habe ich ein JPanel als Zeichenfläche, auf dem ich den Baum per paintComponent zeichne und auf einem anderen JPanel verschiedene Buttons, um Knoten hinzuzufügen, zu entfernen etc.
Bisher funktioniert das auch super, mein Baum wird ohne Probleme gezeichnet.
Jetzt wollte ich mich daran machen, dass ganze zu animieren. Drückt der Benutzer z.B. "Search" soll per Animation die Navigierung durch den Baum gezeigt werden.
Jetzt kommt mein Problem:
Wie starte ich Animationen per JButton Knopfdruch bzw. per ActionListener-Event?
Ich dachte mir, ich rufe dazu einfach auf meiner Zeichenflächen-Klasse eine Methode auf, die die Animation ausführt. Also per Schleife die grafischen Elemente neu setzen und dann repaint aufrufen, solange bis die Animation zu Ende sein soll. Das Problem ist, das repaint() nicht dann ausgeführt wird, wenn ich es will.
Repaint() wird erst dann aufgerufen, wenn meine Methode zum Animieren durchgelaufen ist und somit die Animation auch schon längst vorbei ist. Nach der API liegt das wohl daran, dass repaint() erst ausgeführt wird, wenn alle aktuellen Events behandelt wurden. Da die Animationsmethode ja von einem Button-Event aufgerufen wurde, also hier erst, wenn die Methode vorbei ist.
Ich hatte dann probiert, die Animation direkt in der repaint()-Methode zu konstruieren, indem ich z.B. eine ArrayList mit den nötigen Infos für die Animation erstelle und auf diese dann zugegriffen wird. Leider zeichnet repaint() aber erst dann tatsächlich neu, wenn schon alles ausgeführt wurde.
Ich bin so langsam am verzweifeln, vermutlich ist das ein ganz häufiges Problem, aber ich konnte per Suche & Google nichts finden. Es wäre echt super, wenn mir da jemand helfen könnte.