Hallo zusammen,
Ich ecke momentan mit der Swing-paintComponent-Methode immer wieder an.
Zunächst habe ich eine Klasse, die von JPanel abgeleitet ist und die paintComponent-Methode überschreibt.
Innerhalb dieser paintComponent-Methode wird das Graphics-Objekt an diverse Methoden übergeben, damit diese ebenfalls zeichnen können. (Alles innerhalb dieser Klasse)
Nun habe ich allerdings eine weitere Klasse (Animator), die von Thread abgeleitet ist und das genannte Panel übergeben bekommt. Innerhalb dieser Klasse sollen Spielfiguren gezeichnet werden, die über das Panel "wandern" sollen. Dazu lasse ich die Zeichenvorgänge innerhalb des Animationsthreads immer mal wieder für einige Millisekunden schlafen, damit eine Animation entsteht.
Das Problem ist jetzt nur folgendes:
Zunächst erzeuge ich in der Panel-Klasse innerhalb der paintComponent einen neuen Animator-Thread, der dann die Animationsmethoden in der run()-Methode ausführt. Das funktioniert auch soweit.
ABER.. die Methode in der run() braucht zum Zeichnen das Graphics-Object.
Nur wie komme ich an dieses Objekt außerhalb der Panelklasse? Zum Testen habe ich im Konstruktor des Animators das Panel mit übergeben und ziehe mir das Graphics-Objekt mit panel.getGraphics().
Funktionieren tut dies, allerdings ist mir bekannt, dass man das nicht so machen sollte. Außerdem führt es zum Flackern bei der Animation.
Wie komme ich also von außerhalb an das Graphics-Objekt, bzw. wie initiiere ich eine Methode von außerhalb die das Graphics-Objekt benötigt?
Wenn es gewünscht ist, kann ich auch gern etwas Code posten. Vielen Dank schonmal!
Ich ecke momentan mit der Swing-paintComponent-Methode immer wieder an.
Zunächst habe ich eine Klasse, die von JPanel abgeleitet ist und die paintComponent-Methode überschreibt.
Innerhalb dieser paintComponent-Methode wird das Graphics-Objekt an diverse Methoden übergeben, damit diese ebenfalls zeichnen können. (Alles innerhalb dieser Klasse)
Nun habe ich allerdings eine weitere Klasse (Animator), die von Thread abgeleitet ist und das genannte Panel übergeben bekommt. Innerhalb dieser Klasse sollen Spielfiguren gezeichnet werden, die über das Panel "wandern" sollen. Dazu lasse ich die Zeichenvorgänge innerhalb des Animationsthreads immer mal wieder für einige Millisekunden schlafen, damit eine Animation entsteht.
Das Problem ist jetzt nur folgendes:
Zunächst erzeuge ich in der Panel-Klasse innerhalb der paintComponent einen neuen Animator-Thread, der dann die Animationsmethoden in der run()-Methode ausführt. Das funktioniert auch soweit.
ABER.. die Methode in der run() braucht zum Zeichnen das Graphics-Object.
Nur wie komme ich an dieses Objekt außerhalb der Panelklasse? Zum Testen habe ich im Konstruktor des Animators das Panel mit übergeben und ziehe mir das Graphics-Objekt mit panel.getGraphics().
Funktionieren tut dies, allerdings ist mir bekannt, dass man das nicht so machen sollte. Außerdem führt es zum Flackern bei der Animation.
Wie komme ich also von außerhalb an das Graphics-Objekt, bzw. wie initiiere ich eine Methode von außerhalb die das Graphics-Objekt benötigt?
Wenn es gewünscht ist, kann ich auch gern etwas Code posten. Vielen Dank schonmal!
Zuletzt bearbeitet: