JTree aktualisieren bzw. komplett neu aufbauen

Status
Nicht offen für weitere Antworten.

spidermobile

Bekanntes Mitglied
Hallo zusammen,

ich habe mir mal wieder aus ein paar Codeschnipsel (alle hier aus dem Forum :) ) etwas zusammengestellt. Ich möchte mit mit dem JFileChooser das Verzeichnis auswählen und dann im JTree das Ergebnis anzeigen.

Wie schaffe ich es, dass der bereits gezeichnete JTree nach der Auswahl über JFileChosser aktualisiert wird?

Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;

public class Explorer extends JFrame implements ActionListener {
	
	public JFrame frame;
	public JScrollPane scrollpane;
	public File root;
	public FileTreeModel model;
	public JTree tree;
	
	public String pathName = "";
	public JButton selectPath;
	
	public Explorer() {
		
		if (pathName.equals(""))
			root = new File("h:\\");
		else
			root = new File(pathName);
			
		model = new FileTreeModel(root);
		tree = new JTree(model);
		scrollpane = new JScrollPane(tree);

		selectPath = new JButton("Auswahl");
		selectPath.addActionListener(this);
		
		//	   frame = new JFrame("FileTreeDemo");
	   getContentPane().add(scrollpane, "Center");
	   getContentPane().add(selectPath, "South");
	   
		addWindowListener( new WindowAdapter(){
			public void windowClosing( WindowEvent e ) {
				exit();
			}
		});
		
	   setTitle("Test");
	   setSize(400,600);
	   setVisible(true);
	}

	public void actionPerformed(ActionEvent evt){
		Object source = evt.getSource();

		if (source == selectPath) {
			getPath();
		}
	}
	
	public void exit(){
		System.exit( 0 );
	}
	
	public static void main(String[] args) {
		
		Explorer ex = new Explorer();
	}

  public String getPath() {
	    // Dateiauswahl einrichten
	  JFileChooser chooser;
	  chooser = new JFileChooser();

	    chooser.setCurrentDirectory(new File("."));

	    //Es werden Verzeichnisse und keine Dateien angezeigt. Ergo können nur Verzeichnisse ausgewählt werden.
	    chooser.setFileSelectionMode(1);

	    // Dateiauswahldialogfeld anzeigen
	    int result = chooser.showDialog(frame, "Transfer");

	    // Falls Textdatei akzeptiert, als Symbol des Bezeichnungsfeldes festlegen
	    if (result == JFileChooser.APPROVE_OPTION) {
	      pathName = chooser.getSelectedFile().getPath();
	    }
	   
	    if (result == JFileChooser.CANCEL_OPTION) {
			pathName = "";
			dispose();
	    }
		
	      return pathName;
  }
}


class FileTreeModel implements TreeModel {
  protected File root;
  public FileTreeModel(File root) { this.root = root; }

  public Object getRoot() { return root; }

  public boolean isLeaf(Object node) {  return ((File)node).isFile(); }

  public int getChildCount(Object parent) {
   String[] children = ((File)parent).list();
   if (children == null) return 0;
   return children.length;
  }

  public Object getChild(Object parent, int index) {
   String[] children = ((File)parent).list();
   if ((children == null) || (index >= children.length)) return null;
   return new File((File) parent, children[index]);
  }

  public int getIndexOfChild(Object parent, Object child) {
   String[] children = ((File)parent).list();
   if (children == null) return -1;
   String childname = ((File)child).getName();
   for(int i = 0; i < children.length; i++) {
     if (childname.equals(children[i])) return i;
   }
   return -1;
  }

  public void valueForPathChanged(TreePath path, Object newvalue) {}

  public void addTreeModelListener(TreeModelListener l) {}
  public void removeTreeModelListener(TreeModelListener l) {}
  
}
 
B

Beni

Gast
Wenn du den Baum veränderst musst du: zum einen natürlich das TreeModel verändern (Knoten hinzu/wegnehmen, etc...), und zum anderen alle TreeModelListener (die du derzeit einfach wegwirfst) von den Veränderungen benachrichtigen.

Guck dir mal an, was in der API zu TreeModelListener steht :wink:
 

spidermobile

Bekanntes Mitglied
Danke für die Info. So kompliziert brauche ich allerdings nicht. Mal salopp gesagt. Ich möchte einfach den ganzen Baum löschen und neu aufbauen.

Gibt es dafür eine einfache Lösung?
 
B

Beni

Gast
Deinem JTree eine neue Instanz eines TreeModels übergeben :wink:
 

spidermobile

Bekanntes Mitglied
Hallo Beni,

das war auch mein erster Gedanke. Nur leider hat dieser nicht funktioniert :cry: .

Code:
	public void actionPerformed(ActionEvent evt){
		Object source = evt.getSource();

		if (source == selectPath) {
		model = new FileTreeModel(new File(getPath()));
		tree = new JTree(model);
		
		}
	}
 
B

Beni

Gast
*hust* "tree = new JTree(model);"

Das erzeugt ein neues JTree-Objekt!
Du generierst hier einen neuen Tree, der überhaupt nichts mit dem alten zu tun hat... das kann ja nicht gehen.

Versuchs mal mit "tree.setModeul( model )".
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S JTree aktualisieren Java Basics - Anfänger-Themen 4
M JTree aktualisieren Java Basics - Anfänger-Themen 3
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
G Erstellten JTree aus einer XML-Datei akktualisieren Java Basics - Anfänger-Themen 11
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
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
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
J Progressbar aktualisieren Java Basics - Anfänger-Themen 17
C Timer aktualisieren Java Basics - Anfänger-Themen 5
TimoN11 Array mit unterschiedlichen längen aktualisieren, dann als Methodenwert einsetzen Java Basics - Anfänger-Themen 1
J Java FX - Label aktualisieren Java Basics - Anfänger-Themen 1
J Aktuelle Zeit in einer JavaFX Anwendung aktualisieren lassen Java Basics - Anfänger-Themen 4
M Probleme beim aktualisieren eines JPanels Java Basics - Anfänger-Themen 7
A Input/Output System.out Ausgabe aktualisieren, ohne Konsole vollzuspamen Java Basics - Anfänger-Themen 2
P WindowBuilder aktualisieren Java Basics - Anfänger-Themen 0
L Threads Laufbild Erzeugen Problem mit Aktualisieren des JPanels Java Basics - Anfänger-Themen 2
F Problem bei ImageIcon aktualisieren Java Basics - Anfänger-Themen 5
MrSnake Tabelleninhalt aktualisieren Java Basics - Anfänger-Themen 12
R Programm aktualisieren/refreshen Java Basics - Anfänger-Themen 7
2 Uhrzeit und Datum aktualisieren Java Basics - Anfänger-Themen 12
M Methoden Methoden aktualisieren Java Basics - Anfänger-Themen 2
M Liste mit repaint aktualisieren Java Basics - Anfänger-Themen 1
B Erste Schritte Anzeige von Graphics Objekten einzeln aktualisieren Java Basics - Anfänger-Themen 1
G Input/Output Webseite Cache-Control: max-age=3 Öfters Aktualisieren? Java Basics - Anfänger-Themen 1
J Bilder in Labels aktualisieren Java Basics - Anfänger-Themen 2
G Seite aktualisieren Java Basics - Anfänger-Themen 1
O JList aktualisieren während Dateieinlesung Java Basics - Anfänger-Themen 4
W Erste Schritte Timer soll jede Sekunde Label aktualisieren Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben