Konzeptfrage: Welches Objekt ist zuständig?

Nachdem ich nun von Peter XL, (wollte sagen GL) erstmals in die Geheimnisse der Objekte eingeführt wurde, (Ja, auch Bildschirme sind Objekte, Vielen Dank :smile:) hab ich nun eine Frage an die Gemeinschaft, (weil ich ja nicht immer ihn belästigen will.)

Ich habe nun also den Bildschirm als Objekt einerseits,
andererseits hab ich ein Symbol als das eigentliche Objekt meine Programms.
Wenn ich das Symbol nun am Bildschirm verschieben will, (der „Zweck“ meine Programms), ist das nun eine Eingenschaft des Symbols, oder eine Eigenschaft des Bildschirms?

Wie macht man das elegant,
muss da unbedingt ein Listener her, oder wie kommunizieren solche Objekte?

public class Anzeige extends JFrame
{
public Anzeige()
{ setSize(800,400); …
setVisible(true);
}
}

public class Teilnehmer {
int PosX,PosY;
Teilnehmer() // Neuen Teilnehmer erzeugt.
{ PosX=rnd.nextInt(100);
PosY=rnd.nextInt(100);
}
}

class …
public static void main( String[] args )
{ anzeige = new Anzeige();
tn = new Teilnehmer();
=> Wie wird so ein Teilnehmer nun angezeigt
und nach Bewegung neu positioniert?

}

Hi,

im Prinzip kommst du da nicht um Events und Listener herum, denn: Wie soll sich denn dein Objekt verschieben?
Wahrscheinlich mithilfe der Maus.

Du benötigst also einerseits einen MouseListener, der dich merken lässt, dass da jemand was von deinem Objekt will, also zum Beispiel „Festhalten“.

Dann benötigst du noch einen MouseMotionListener, der dir dann sagt, dass sich die Maus und damit wahrscheinlich auch dein Objekt bewegt.

Diese Bewegung macht aber wiederum das Objekt nicht von selbst, also muss es dann dem Objekt entsprechend mitgeteilt werden, dass es seine Position ändern soll.

In Pseudocode sieht dass dann evtl. so aus:

Wurde die linke Maustaste gedrückt?
+--Ja =\> Liegt die Position des Mauszeigers innerhalb der Objektfläche?
 +--Ja =\> Bewegt sich die Maus (anderer Listener)?
 +-- Ja =\> Objektposition verändern
 +-- Nein =\> Es kommt eh kein Event
 +--Nein =\> Nix machen
+--Nein =\> Es kommt eh kein Event

So oder ähnlich kannst du das Ganze umsetzen.

Ciao, Bill

im Prinzip kommst du da nicht um Events und Listener herum,
denn: Wie soll sich denn dein Objekt verschieben?
Wahrscheinlich mithilfe der Maus.

Danke, Bill.
Leider ists das nicht.
Ich hätte meine Frage wohl deutlicher stellen sollen.
( Hat nichts mit der Maus zu tun. Es geht um die Visualisierung von Ergebnissen, die in einer Datei bereitgestellt werden.)

‚JFrame anzeige‘ steht.
‚Teilnehmer teilnehmer‘ steht auch, und holt sich jede Minute einen Zahl aus einer Datei. kann also „selbständig“ seine Wert ändern.
(und wird dann in entsprechender Höhe positioniert/visualisiert.)

Welche Objekt ist nun für die Bildschirmaktualisierung zuständig:
Eigentlich ist wohl Anzeige in Teilnehmer unbekannt,
als auch Teilnehmer in Anzeige unbekannt. Also muss ich wohl einen Parameter übergeben, dessen Struktur eigentlich unbekannt sein sollte.
Schreib ich nun im main:
-> teilnehmer.RePositionieren(anzeige);
oder
-> anzeige.Repaint(teilnehmer);
Oder brauch ich einen Listener, oder überhaupt was anderes.

MVC Pattern
Hi,

Du brauchst ein Datenmodell, dass Daten wie die Anzahl der Teilnehmer, die Datenquelle für deren Bewegungsdaten und die Anzeige-Instanzen hält. Du brauchst einen Controller, der die Änderungen in Deinem Datenmodell ermöglicht. Und schliesslich brauchst Du eine View, die den ganzen Kram anzeigt.

Sprich: Du brauchst ein Model View Controller Konzept. Google mal danach.

Gruss,

Herb