# Auf Objekte zugreifen



## Lundner (27. Mrz 2007)

Mein Problem ist folgendes. Ich habe Objekte in einer Baumstruktur miteinander verbunden. Das ganze Sieht in etwa so aus:

Ich habe eine Sitemap, diese beinhaltet Seiten, diese beinhalten wiederrum Links. 

Nun möchte ich beispielsweise durch einen ActionListener in der Klasse der Seiten eine Änderung in der Sitemap hervorrufen. Wie schaffe ich es auf sie zuzugreifen (ich möchte sie ja auch nicht immer als parameter übergeben müssen). 

Gibt es eine Möglichkeit auf alle Objekte zuzugreifen über eine Id (ähnlich wie in JavaScript mit getElementById).

Oder soll ich die Sitemap als Attribut in jeder Seite hinzufügen?


----------



## Wildcard (27. Mrz 2007)

Du meinst ähnlich Frames in html?
Sofern du nach MVC vorgegangen bist sollte es etwa so aussehen:
Du hast einen Container der Seiten und Sitemap enthält.
Der Controller dieses Containers kennt die Seiten und die Sitemap und hat sich auf ihnen als Listener registriert.
Link wird auf einer Seite geklickt -> Controller bekommt ein Event -> Controller aktualisiert die Sitemap.


----------



## Lundner (27. Mrz 2007)

mit javascript kann man auf ein element per 

```
document.getElementById("Mein Element")
```

zugreifen. Ich habe sowieso Probleme damit die GUI und die Verwaltung unter einen Hut zu bringen *rolleyes*

So wie ich das verstanden habe, sollte man einen Controller verwenden um die GUI und die Verwaltung kommunizieren zu lassen?

Über static-Variablen kann ich mich ja den Baum herunterhangeln - sollte ich also einen Controller erstellen (ich benötige ja nur eine Instanz der SitemapGUI und Sitemap).


----------



## Wildcard (27. Mrz 2007)

Für mich hört sich das so an als steckt dir Javascript in den Knochen.
Das ist eine ganz andere Welt.
Erstmal mit OOP auseinandersetzen und dazu gehört das du am Anfang komplett auf static verzichtest.


----------



## Lundner (27. Mrz 2007)

nja bin von meiner uni ins kalte wasser geschmissen worden, muss ein projekt in java implementieren. javascript nutze ich gelegentlich. auf static habe ich auch bisher verzichtet ;-) - hielt es aber für eine mögliche lösung.


----------



## Wildcard (27. Mrz 2007)

Wie gesagt, mein Vorschlag:
*M*odel *V*iew *C*ontroller Paradigma befolgen und Listener zur Kommuniktion verwenden.



> mit javascript kann man auf ein element per
> document.getElementById("Mein Element")


Kann man nicht im geringsten mit Java vergleichen


----------



## Lundner (27. Mrz 2007)

war ja auch nur eine idee ;-) 

danke! ich schau mir das dann mal genauer an ;-)


----------



## Lundner (27. Mrz 2007)

noch eine kleine frage:

wäre es sinnvoll eine art parent-verlinkung anzubringen? d.h. wenn ich eine Seite erstelle, dann lege setze ich auch beispielsweise mein Attribut "parentSitemap" auf die Sitemap in der die Seite liegt?

ist das praktikabel?


----------



## Wildcard (27. Mrz 2007)

Ich hab eh keine richtige Vorstellung davon was du machst. Was ist eine Seite? Was bezeichnest du konkret als Sitemap?
Baust du eine Homepage mit einer Programmiersprache nach?  :lol:


----------



## Lundner (27. Mrz 2007)

ich bitte darum nicht veralbert zu werden ;-)

also mal grob umrissen geht es darum, dass ich ein programm erstellen soll, dass webdesignern helfen soll eine Webseite zu konzipieren. Es geht in erster Linie um inhaltliche Aspekte. 

Die Sitemap umfasst alle Seiten der Hompage (sowas wie index.html, gästebuch.html etc..). Diese werden dann grafisch in einer Übersicht angezeigt. 

Dann gibt es auch noch eine Detailansicht der einzelnen Seiten, in der man diese inhaltlich bearbeiten kann. 

Das Backend ist schon voll funktionsfähig(immerhin ;-) ) - Bloss habe ich noch nie mit GUI programmiert. 

Im Prinzip muss nun "nur noch" die GUI dazu fähig sein die Daten zu aktualisieren und verändern - und sich natürlich dementsprechend aktualisieren.

Hab jetzt einfach mal einen Screenshot gemacht - um es am Beispiel zu erklären:







Wenn ich beispielsweise einen Doppelklick das Seitenthumb von Seite 1 (Pfeil 2) mache dann soll das Tab auf Seite 1(Pfeil 1) springen um die Detailsicht zu öffnen. Dazu muss ich ja irgendwie wieder auf das JTabbedPane zugreifen. Frage mich aber wie ich das am besten organisier!


----------



## Wildcard (27. Mrz 2007)

ok, jetzt wird die Sache klarer.
Du brauchst einen Controller der die TabbedPane und die einzelnen Seiten kennt.
Auf den Seiten registrierst du einen Listener.
Wenn das Event auf das du reagieren willst kommt forderst du die TabbedPane dazu auf einen anderen Tab anzuzeigen.


----------



## Lundner (28. Mrz 2007)

so ich hab jetzt in jeder Klasse einen Verweis auf den Controller angelegt um von überall auf diesen zugreifen zu können? ist das so in Ordnung? Find es etwas umständlich die an jeden Konstruktor zu übergeben...


----------

