Erstellten JTree aus einer XML-Datei akktualisieren

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi,



wie der Titel schon sagt will ich meinen Tree (denn ich aus einer XML-Datei generiere falls es eine Rolle spielt) nachdem ich etwas hinzugefügt ode rgelöscht habe akktualisieren.

Ich hab schon alles möglich versucht bin aber noch zu keinem ergebnis gekommen.

Code:
public void createTree() {

		doc = null;
		try {
			SAXBuilder b = new SAXBuilder(); // validierenden Parser nutzen
			doc = b.build(new File("Personaldaten.xml")); // xml-Datei parsen
		} catch (JDOMException j) {

		} catch (IOException ioe) {

		}

		root = (Element) doc.getRootElement();

		baum = new DefaultMutableTreeNode(root.getName());
		modell = new DefaultTreeModel(baum);
		List listBooks = root.getChildren();
		// Ueber die Schleife holen wir uns alle Kinder
		for (int i = 0; i < listBooks.size(); i++) {

			baum.add(new DefaultMutableTreeNode(((Element) listBooks.get(i))
					.getName()));

		}

		tree = new JTree(modell);

		tree.addTreeSelectionListener(new TreeSelectionListener() {
			public void valueChanged(TreeSelectionEvent e) {
				DefaultMutableTreeNode node = (DefaultMutableTreeNode) e
						.getPath().getLastPathComponent();
				System.out.println("You selected " + node);
				selektedÜbergeben = node.toString();
				System.out.println(selektedÜbergeben);

			}
		});

		tree.setToggleClickCount(0);
		tree.addMouseListener(new MouseAdapter() {

			public void mouseClicked(MouseEvent e) {

				if (e.getClickCount() == 2 && e.getButton() == 1) {

					DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
							.getLastSelectedPathComponent();
					klickübergeben = node.toString();

					Element root1 = (Element) doc.getRootElement();
					System.out.println(root1.getName());
					Element root = root1.getChild(klickübergeben);

					tVorName.setText(root.getChild("Vorname").getText());
					tNachName.setText(root.getChild("Nachname").getText());
					tTel.setText(root.getChild("Telefon").getText());
					tRaum.setText(root.getChild("Raum").getText());
					tKostenstelle.setText(root.getChild("Kostenstelle")
							.getText());
					tGehaltProStunde.setText(root.getChild("Gehalt_pro_Stunde")
							.getText());
					tPersonalnummer.setText(root.getChild("Personalnummer")
							.getText());

				}

			}

		});

	}


Ich hoffe es kann mit jeamand helfen.
Danke schonal im vorraus.

Mit freundlichen Grüßen

Hans
 
G

Guest

Gast
Hallo,

ja das Problem hatte ich auch schon mal ;-)
probier einfach updateUI() auf den JTree, wirkt wahre Wunder! :D

Gruß

taouri
 
G

Guest

Gast
Das hab ich auch schon probiert und auch repaint() und keine ahnung was alles noch.
Funktioniert leider nicht.
Ich hatte auch gedacht kann doch nicht so schwer sein soll er es einfach noch mal neu reinladen aber scheinbar ist es doch nicht so einfach.
 
G

Guest

Gast
ok, eigentlich hätte das funktionieren müssen. Tatsächlich sehe ich aber in deinem Quelltext auch keine einzige Veränderung des Trees. Und grundsätzlich gilt: Eine nicht durchgeführte Veränderung wird auch nicht durch aktualisieren sichtbar :wink:
Sollte doch eine Veränderung vorliegen - vielleicht in einem anderen Codefragment - dann poste den bitte noch, denn nach meiner Erfahrung leigt der Fehler dann irgendwo dort.

Gruß

taouri
 

parabool

Bekanntes Mitglied
habe mir deinen Code jetzt nicht so genau angesehen.

Auf jedenfall solltest du die Änderung an den Daten/Strukur des Tree über das Model vornehmen, das du ja
auch verwendest
Also:

Code:
model.removeNodeFromParent(node); //löschen

model.insertNodeInto(newnode,parentnode,parentnode.getChildCount()); //einfügen
//node.getChildCount() = ans Ende anfügen

model.nodeChanged(node); //ändern
		
model.nodeStructureChanged(node); Strukturänderung

Der Baum wird daraufhin aktualisiert.

Gruss
p
 
G

Guest

Gast
Der JTree wird ja aus einer XML-Datei generiert wenn ich jetzt einen Knotenpunkt aus der XML-Datei löschen oder einen hinzufüge muss er die XML-Datei ha neu einlesen um denn gelöschten konten nicht mehr anzuseigen oder denn hinzugefügten Knoten anzuzeigen.
 
G

Guest

Gast
Das ist z.b die Löschen und Akktualisieren funktion:


Code:
if (e.getSource() == bLöschen || e.getSource() == iLöschen) {

			System.out.println("Löschen");

			int answer = JOptionPane.showConfirmDialog(null,
					"Wollen sie die Datei wirklich Löschen", selektedÜbergeben,
					JOptionPane.YES_NO_OPTION);

			if (answer == JOptionPane.YES_OPTION) {
				
				Element root1 = (Element) doc.getRootElement();
				Element root2 = root1.getChild(selektedÜbergeben);

				root2.getParent().removeContent(root2);

				try {

					XMLOutputter outputter = new XMLOutputter();
					FileOutputStream output = new FileOutputStream(
							"Personaldaten.xml");
					outputter.output(doc, output);
					output.flush();
					output.close();

				} catch (FileNotFoundException h) {
					JOptionPane.showMessageDialog(null,
							"Fehler: Datei nicht gefunden");
				} catch (IOException p) {
					System.out.println("IOException");
				}

			} else if (answer == JOptionPane.NO_OPTION) {
				// clicked no
			}

		}

		if (e.getSource() == iAkktualisieren) {

			System.out.println("Akktualisieren");
			
			
			modell.reload();
			tree.updateUI();
			


		}
 
G

Guest

Gast
Also so leid es mir tut, aber auch hier wird wieder nichts im Tree selbst verändert, sondern nur in XML-Struktur. Das verändern dieser Struktur wirkt sich NICHT und ich wiederhole NICHT auf den Tree aus! Solltest du irgendwo wirklich etwas am Tree machen, dann poste bitte diesen Teil des Codes. Eine Veränderung des Trees erfolgt nur über die Methodenaufrufe auf das Model des Trees.

Gruß

taouri
 
G

Guest

Gast
Ja klar, der JTree selbst verändert sich auch nicht er dient ja auch nur als Graphische anzeige für die XML-Datei.
Aber müsste es nicht möglich sein, dass ich denn Jtree einfach (wie bei starten der Anwendung) neu einlese.
Ich hab schon versucht einfach mal denn kompletten JTree mit removeAllChildren() zu öschen und dann die Methode createTree() ereneut aufzurufen aber dies hat auch nicht fuktioniert.
Es muss doch möglich sein einfach zu sagen wenn ich Akktuallisieren drücke lade denn Tree einfach komplett neu in`s Panel ohne das ich dem JTree mitteilen muss, dass er sich verändert hat, da sich ja nur die XML-Datei verändert!
 
G

Guest

Gast
OK wenn es ohne TreeModel nicht geht wie könnte denn dann eine TreeModel für meine Methode "createTree()" aussehen?
Hab noch nie eins programmiert, vielleicht hat ja jemand eine gutes Beispiel, dass mir helfen könnten.
 

taouri

Aktives Mitglied
Also, hier mal ein Beispeil von mir, dass ich mit Hilfe von JDOM gemacht habe. JDOM ist dir vielleicht ein Begriff, wenn du schon einmal mit XML unter Java gearbeitet hast. Wenn nicht dann würde ich dir auch mal das XML-Kapitel in der JavaInsel empfehlen, die du unter www.galileocomputing.de/openbook/javainsel findest. Aber hier jetzt der Code:

Code:
public void read(String path, DefaultMutableTreeNode treeRoo) 
  throws JDOMException, IOException
{
  SAXBuilder builder = new SAXBuilder();
  Document doc = builder.build(path);
  Element root = doc.getRootElement(); 
    
  String file     = new File(path).getName();
  String fileName = file.substring(0,file.length()-4);
    
  DefaultMutableTreeNode base = new DefaultMutableTreeNode(fileName);
    
  String name = root.getName();
    
  treeRoot.add(base);
    
  addNodes(root,base);
}

private void addNodes(Element baseElement, DefaultMutableTreeNode baseNode)
  throws IOException
{
  DefaultMutableTreeNode next = null;
  
  List<Element>     children         = baseElement.getChildren();
  Iterator<Element> childrenIterator = children.iterator();

  while(childrenIterator.hasNext())
  {
    Element child = childrenIterator.next();      
    
    next = new DefaultMutableTreeNode(element.getTreeName());
    baseNode.add(next);    
    addNodes(child,next);
  } 
}

hth


Gruß

taouri
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Ordner in neuen erstellten Ordner erstellen Java Basics - Anfänger-Themen 12
C Methode Seiten tauschen eines erstellten Rechtecks mit Seite A und B Java Basics - Anfänger-Themen 9
K Boolean in einer erstellten Klasse verwenden Java Basics - Anfänger-Themen 14
B Wie kann ich eine Methode einer selbst erstellten Klasse statisch importieren? Java Basics - Anfänger-Themen 5
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
T Selbst erstellten Dateityp mit java Programm assoziieren? Java Basics - Anfänger-Themen 4
A OOP Ausgabe aller erstellten Objekte Java Basics - Anfänger-Themen 3
R Ein/Ausleseproblem von Datei mit selbst erstellten Objekten Java Basics - Anfänger-Themen 10
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
F Jtree kürzt Namen auf ... Java Basics - Anfänger-Themen 4
H Collections JTree remove zeigt keinen Effekt! Java Basics - Anfänger-Themen 8
H Best Practice Wo wird der rootNode eines JTree gespeichert... Java Basics - Anfänger-Themen 0
H Erste Schritte JTree: Instanzen einer Klasse speichern oder Namen/Strings... Java Basics - Anfänger-Themen 4
R JTree bewegen Java Basics - Anfänger-Themen 6
I JTree, Root-Name ändern Java Basics - Anfänger-Themen 4
N Dynamisch JTree erstellen Java Basics - Anfänger-Themen 3
G bestimmte dateiendungen in jtree rausfiltern Java Basics - Anfänger-Themen 7
P JTree aus txt Java Basics - Anfänger-Themen 8
M Warum wird mein Icon bei den JTree Nodes nicht angezeigt? Java Basics - Anfänger-Themen 7
JStickman JTree, JScrollPane, Liste mit graphischer Suchleiste - Dateimanager Java Basics - Anfänger-Themen 10
M JTree + JTab Java Basics - Anfänger-Themen 3
T JTree füllen Java Basics - Anfänger-Themen 3
B JTree knoten wird nicht übernommen Java Basics - Anfänger-Themen 4
S JTree Hilfe Java Basics - Anfänger-Themen 6
P Jtree MouseListener und NoCollapse Java Basics - Anfänger-Themen 2
M JTree ohne root anzeigen Java Basics - Anfänger-Themen 5
F JTree mit JSpinner Java Basics - Anfänger-Themen 2
I Liste von Dateien anzeigen/JTree Java Basics - Anfänger-Themen 4
G Zugriff auf JTree-Objekt Java Basics - Anfänger-Themen 2
K Problem: JTree mit integrierten JCheckboxen Java Basics - Anfänger-Themen 5
B OOP Jtree aus TreeMap<String, String[]> erstellen? Java Basics - Anfänger-Themen 6
D JTree ich dreh durch :D Java Basics - Anfänger-Themen 2
T JTree root setzten Java Basics - Anfänger-Themen 13
G xml Datei in JTree Java Basics - Anfänger-Themen 2
S JTree, Problem mit View Update Java Basics - Anfänger-Themen 2
R Problem mit JTree und JTable Java Basics - Anfänger-Themen 16
A JTree drucken Java Basics - Anfänger-Themen 2
M JTree und ein Button mit ActionListener Java Basics - Anfänger-Themen 3
G Verständnisproblem --> JTree Java Basics - Anfänger-Themen 6
G Filesystem in JTree anzeigen Java Basics - Anfänger-Themen 4
A Jtree Aufbau Java Basics - Anfänger-Themen 5
G JTree ilstener Java Basics - Anfänger-Themen 3
G JTree Java Basics - Anfänger-Themen 2
S jTree initialisierung Java Basics - Anfänger-Themen 4
F Doppelklick-Event auf JTree Java Basics - Anfänger-Themen 5
J ArrayListen mit Name und Vater an JTree übergeben Java Basics - Anfänger-Themen 3
G aussehen vom jtree wiederherstellen Java Basics - Anfänger-Themen 3
P JTree mit mehreren Wurzeln Java Basics - Anfänger-Themen 2
G Umbenennen im JTree Java Basics - Anfänger-Themen 5
G rechter Mausklick im JTree Java Basics - Anfänger-Themen 2
G Bilder im jTree Java Basics - Anfänger-Themen 3
G jTree Pfad merken Java Basics - Anfänger-Themen 2
S JTree aktualisieren Java Basics - Anfänger-Themen 4
M JTree aktualisieren Java Basics - Anfänger-Themen 3
E JTree - Element suchen Java Basics - Anfänger-Themen 5
G JTree Problem. Java Basics - Anfänger-Themen 5
G JTree Java Basics - Anfänger-Themen 2
E JTree - Verzeichnisbaum Java Basics - Anfänger-Themen 3
G JTree Frage Java Basics - Anfänger-Themen 5
G Ebene von JTree ermitteln? Java Basics - Anfänger-Themen 6
G Icons für JTree skalieren? Java Basics - Anfänger-Themen 3
G Standard JTree ausblenden? Java Basics - Anfänger-Themen 5
B JTree mit Verzeichnissen füllen Java Basics - Anfänger-Themen 17
G Object vor reload von JTree merken und danach wieder setzen? Java Basics - Anfänger-Themen 5
P Wert aus JTree in ComboBox setzen? Java Basics - Anfänger-Themen 2
G Problem mit Refresh von JTree Java Basics - Anfänger-Themen 11
lomtas Scrollbalken für JTree Java Basics - Anfänger-Themen 3
lomtas JTree Struktur im Nachhinein ändern Java Basics - Anfänger-Themen 2
K JTree verlinken Java Basics - Anfänger-Themen 3
T ArrayList mit Dateien in die richtigen Ordner eines JTree Java Basics - Anfänger-Themen 16
K JTree aus DB rekursiv füllen Java Basics - Anfänger-Themen 12
M Dateisystem in Jtree - Ordnericon darstellen Java Basics - Anfänger-Themen 4
G JTree vollständigen pfad anzeigen Java Basics - Anfänger-Themen 11
R JTree aus einer ArrayList Java Basics - Anfänger-Themen 9
J JTree Bilder Java Basics - Anfänger-Themen 2
G JTree.TreeListener Java Basics - Anfänger-Themen 12
S JTree valueChanged() Ausgabe leider immer mit Pfadangabe! Java Basics - Anfänger-Themen 4
S JTree aktualisieren bzw. komplett neu aufbauen Java Basics - Anfänger-Themen 6
G Scrollen im JTree Java Basics - Anfänger-Themen 17
G Hintergrundsfarbe für JTree Java Basics - Anfänger-Themen 15
F JTree-Knoten (DefaultMutableTreeNode) formatieren ? Java Basics - Anfänger-Themen 3
Y JTree: ein Knoten als Objekt Java Basics - Anfänger-Themen 2
J JTable / JTree: Unsichtbare Elemente Java Basics - Anfänger-Themen 4
G JTree Explorer Problem mit listRoots() Java Basics - Anfänger-Themen 9
V Jtree: Alle Verzeichnisse und Ordner anzeigen, aber wie? Java Basics - Anfänger-Themen 2
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
D remove Object von einer Liste von Obejcts Java Basics - Anfänger-Themen 3
FunkyPhil94 Wert in einer Lambda Funktion erhöhen Java Basics - Anfänger-Themen 3
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
B Kommunikation mit Seriellen Schnittstellen + Integration einer lib Java Basics - Anfänger-Themen 1
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben