ich bin recht neu in Java, und bin auf der Suche nach einpaar Beispielen oder Erklärungen über die "Struktur" von Java Programmen bei denen z.B. grafische Objekte bewegt werden. Wenn man jetzt beispielsweise eine Threadklasse hat und eine Frame- oder sogar eigene Panel-Klasse. Ich würde gerne wissen welche Teile in welcher Klasse programmiert werden, also ob das Zeichnen der grafischen objekte in der Panel Klasse gemacht wird, oder in der Threadklasse, in welche Klasse die Steuerung kommt, usw...
Ich suche einfach einen guten Programmierstil von anfang an, um später nicht soviele Probleme zu haben. Gibt es da eine Empfehlung bzw. Erklärung oder kann mir das einer Erklären.
mhhh..ich denke das ist Geschmackssache ich würde das regelmäßige neuzeichenen, dass für Animationen möglich ist in der paint-Methode machen und dann im Thread ein repaint auslösen und eventuell Variablen, die zur Darstellung verwendet werden im Thread ändern (also z.B. die Position von Objekten die sich bewegen sollen).
Wenn das Zeichen lange dauert, fängt das an zu flackern. Dagegen hilft, dass du erst in ein BufferedImage zeichnest und das dann auf Frame/Panel.
Eventuell ist es sogar sinnvoll die Steuerung in eine vom Thread unabhängige Funktion zu machen und diese dann vom Thread aus aufzurufen. Wenn du nämlich einen Thread stoppst, ist er weg. Ihn anzuhalten und weiterlaufen zu lassen, ist nicht möglich. Wenn du im Thread aber nur eine Funktion einer anderen Klasse aufrufst, kannst du einfach einen neuen Thread machen, was bei einer Threadklasse auch alle Eigenschaften der Klasse zurücksetzen würde.
Die JFrameklasse erzeugt die JPanelklasse, fügt sie dem Frame hinzu,
und erzeugt die Kontrollerklasse.
Die JPanelklasse zeichnet die Animation mittels paintComponent und den Animationsvariablen.
Die Kontrollerklasse erzeugt die Animationsklasse (Threadklasse) und führt die Animationsaktionen
des Panels aus.
Die Animationsklasse greift auf die Animationsvariablen der JPanelklasse zu
um sie zu verändern und ruft die repaint des Panels auf um dadurch die Animation zu verwirklichen.
Wie übergebe ich dann dem Thread die paintComponent() Methode vom JPanel?
Ich habe nun eine Panelklasse mit einer paintComponent() Methode, und eine MyFrame klasse, in der MyFrame klasse erzeuge ich ein neues Objekt der Threadklasse und übergebe als Parameter das objekt der Panelklasse (welches auch in der MyFrameklasse erzeugt wurde).
Nur wird nichts gezeichnet, wenn ich jedoch den Thread in der Panelklasse erzeuge und "this" übergebe, dann wird es gezeichnet.