# GUI über XML aufbauen



## AM-IT (20. Apr 2008)

Hallo zusammen,

da ich nicht genau weis ob dieses Thema zum Bereich AWT, Swing & SWT oder XML & Co. gehört, habe ich mir gedacht es in beiden Bereichen anzulegen.

Es geht um Folgendes: Als Java-Anfänger habe ich es mittlerweile geschafft Informationen aus einer TXT-Datei auszulesen und daraus eine strukturiterte XML-Datei zu erzeugen! Glaubt mir... ohne große Erfahrungen war das schon keine schlechte Leistung. 

Nun muss ich aus den Daten aus der XML-Datei meine GUI dynamisch aufbauen / generieren. Ich habe mich schon ein Weile damit beschäftigt und die ersten Resultate, aber wirklich zufrieden bin ich damit noch nicht...

Folgende XML-Informationen sind vorhanden:


```
<xml version="1.0" encoding="utf-8"> 
	<group name="GRUPPE A"> 
		<subgroup name="GRUPPE A1"> 
			<attribute name="VARIABLE a" value="abc" active="true"></attribute> 
			<attribute name="VARIABLE b" value="123" active="true"></attribute> 
			<attribute name="VARIABLE c" value="192.168.1.1" active="false"></attribute> 
		</subgroup> 
		<subgroup name="GRUPPE A2"> 
			<attribute name="VARIABLE d" value="abc" active="true"></attribute> 
			<attribute name="VARIABLE e" value="123" active="false"></attribute> 
			<attribute name="VARIABLE f" value="192.168.1.1" active="false"></attribute> 
		</subgroup> 
	</group> 
	<group name="GRUPPE B"> 
		<subgroup name="GRUPPE B1"> 
			<attribute name="VARIABLE g" value="abc" active="true"></attribute> 
			<attribute name="VARIABLE h" value="123" active="true"></attribute> 
			<attribute name="VARIABLE i" value="192.168.1.1" active="false"></attribute> 
		</subgroup> 
		<subgroup name="GRUPPE B2"> 
			<attribute name="VARIABLE j" value="abc" active="true"></attribute> 
			<attribute name="VARIABLE k" value="123" active="false"></attribute> 
			<attribute name="VARIABLE l" value="192.168.1.1" active="true"></attribute> 
		</subgroup> 
	</group> 
</xml>
```

Ziel ist es, eine Oberfläche aufzubauen, die im linken Bereich eine Art Verzeichnisstruktur (Menü) bildet bis zu den subgroups und im rechten Bereich der Oberfläche sollen dann die jeweiligen Variablen mit den dazugehörigen Werten in folgender Form angezeigt werden (im Formular unten):







... Kann mir jemand sagen wie ich einen solchen Aufbau realisieren kann? Hat jemand Erfahrungen im dynamischen Aufbau von Oberflächen, die über XML realisiert werden?

So könnte die Oberfläche mit Daten (aus der XML-Datei) befüllt ausschauen:







Punkte, die für mich unklar sind, bzw. wo ich unbedingt ein paar Hilfestellungen benötige:
1. Wie realisiere ich dynamisch den Aufbau der Oberfläche mit den drei Bereichen?
2. Wie kann ich für einen best. Bereich (z.B. Menü) die Informationen auslesen? Welches Objekt nutze ich um eine Verzeichnissstruktur zu realisieren?

Ich habe natürlich noch mehr Fragen und Schwierigkeiten, aber es wäre toll, wenn ich erstmal mit die ersten beiden Punkte realisieren könnte...

Ich hoffe, dass die Grafiken usw. für euchverständlich genug sind...

Vielen Dank im Voraus für die Unterstützung; ich bin euch für jede Hilfestellung und Anregung dankbar.


----------



## SlaterB (20. Apr 2008)

> Welches Objekt nutze ich um eine Verzeichnissstruktur zu realisieren? 

JTree?

> Wie kann ich für einen best. Bereich (z.B. Menü) die Informationen auslesen?

was bedeutet es 'für jemanden Informationen auszulesen'?
welche Informationen?, von wo?, was passiert damit?

> Wie realisiere ich dynamisch den Aufbau der Oberfläche mit den drei Bereichen? 

Arrays, Listen, Maps

aber fang ganz einfach an,
analysiere dein XML, mit irgendeinem Parser oder per Hand,
erkenne bestimmte Objekte und setze die sofort in new JTextField() um oder irgendeine Zwischenstruktur aus der später die GUI entsteht,

allgemein klingt das so, also wenn du die GUI-Elemente an sich noch nicht besonders kennst,
dann wäre es natürlich vorteilhaft, damit erstmal für sich zu arbeiten, bevor das dynamisch wird,

und wenn schon dynamisch, dann nicht gleich GUI in drei Teile aufteilen, mehrere SubGruppen und wer weiß noch was aufeinmal,
langsam ein Element nach dem anderen einbauen


----------



## Marco13 (20. Apr 2008)

Ohne damit das konkrete Problem zu lösen, wollte ich hier nur mal einen Link auf http://swixml.org/ einwerfen...


----------



## AM-IT (23. Apr 2008)

Danke erstmal für die Informationen! 

@Marco: Den Link zu swixml kenne ich, aber das ist nicht wirklich das, was ich suche...

@SlaterB: Die Informationen habe ich alle in Listen gespeichert. Wie kann ich aber bspw. durch Klicken eines Menüeintrags im JTree Objekt im linken Menübereich ein Fenster mit den dazugehörigen Attributen öffnen / anzeigen lassen? Danke für deine Tipps!

Ach ja: Ist es möglich bzw. macht es Sinn einen bestimmten Bereich der GUI statisch aufzubauen (also zu basteln) und den Rest (also wo die Daten herkommen) dann dynamisch zu integrieren? Wie erstelle ich am einfachsten mit Eclipse eine Oberfläche? Gibt es bestimmte Zusatz-Tools? Plugins? Sorry für die ganzen Fragen, aber ich hoffe dennoch, dass mich jemand ein wenig unterstützen kann.

Danke!


----------



## SlaterB (23. Apr 2008)

> Wie kann ich aber bspw. durch Klicken 

ganz normal mit Listenern usw. die Aktion anstoßen
(ich habe ja den Verdacht, dass du die Komponenten an sich noch nicht kennst, unabhängig davon, ob sie dynamisch sind oder normal programmiert)
und als Aktion ganz normal einen neuen Teil der GUI erzeugen, 
ob dynamisch oder nicht ist ja für das Anstoßen der Aktion egal

wenn der Menüeintrag links dynamisch erstellt ist, dann muss natürlich auch sein ActionListener und alles weitere dynamisch dazu kommen,
also irgendwo in XML beschrieben und verarbeitet werden,
wenn man sich nur für alles was überlegt dann ist das machbar

mit deinen Fragen klingt das alles aber viel viel zu schwer für dich

-----

zu Tools usw. kann ich persönlich nix sagen, 
halte ich nicht so viel von, als dass ich mir das freiwillig antuen würde (außer es selber zu bauen  )
und hatte noch keine Aufgabe dazu


----------

