JTee - Expansionsmöglichkeit zuweisen

Devil_Noe

Mitglied
Hi!

Ich schreibe gerade einen DateiExplorer (ich weiss, viele Themen dazu hier, jedoch nicht so ganz fündig geworden).

Kann mir jemand einen Tip geben, wie ich erzwinge, dass ein leeres Directory als Folder (und nicht als Datei=Blatt) dargestellt wird? Den Baum befülle ich durch rekursives Durchlaufen der Volumes. Ich finde jedoch nichts, wie ich einem Blatt die Eigenschaft "expandierbar" aufzwingen kann!

Thnx
 
Zuletzt bearbeitet:

henpara

Bekanntes Mitglied
Hab diese Klasse ausm Inet bei mir eingebaut und gerade gecheckt. Es tut das, war du möchtest. Ich bin gerade aber zu faul die richtige Stelle rauszusuchen und übergebe dir strahlend diese Aufgabe.

mfg

Java:
package gui;
import java.awt.event.ActionEvent;

public class FileTreeFrame extends JFrame {
	private JTree fileTree;

	private FileSystemModel fileSystemModel;

	private JTextArea fileDetailsTextArea = new JTextArea();
	private JButton rückgabe;
	private MyAction myAction;
	public FileTreeFrame(String directory) {
		super("Datei auswählen");
		myAction = new MyAction();
		this.setLayout(null);
		rückgabe = new JButton ("Rückgabe");
		rückgabe.setBounds(520, 1, 100, 20);
		this.getContentPane().add(rückgabe);
		rückgabe.addActionListener(myAction);
		fileDetailsTextArea.setEditable(false);
		fileSystemModel = new FileSystemModel(new File(directory));
		fileTree = new JTree(fileSystemModel);
		fileTree.setEditable(true);
		fileTree.addTreeSelectionListener(new TreeSelectionListener() {
			public void valueChanged(TreeSelectionEvent event) {
				File file = (File) fileTree.getLastSelectedPathComponent();
				fileDetailsTextArea.setText(getFileDetails(file));
			}
		});
		JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, new JScrollPane(
				fileTree), new JScrollPane(fileDetailsTextArea));
		splitPane.setBounds(0, 0, 500, 480);
		getContentPane().add(splitPane);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setSize(640, 480);
		setVisible(true);
	}
	private class MyAction implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			if (e.getSource() == rückgabe) {
				running.Global.setFile((File) fileTree.getLastSelectedPathComponent()); 
				dispose();
			}		
		}	
	}

	private String getFileDetails(File file) {
		if (file == null)
			return "";
		StringBuffer buffer = new StringBuffer();
		buffer.append("Name: " + file.getName() + "\n");
		buffer.append("Path: " + file.getPath() + "\n");
		buffer.append("Size: " + file.length() + "\n");
		return buffer.toString();
	}

}

class FileSystemModel implements TreeModel {
	private File root;

	private Vector<TreeModelListener> listeners = new Vector<TreeModelListener>();

	public FileSystemModel(File rootDirectory) {
		root = rootDirectory;
	}

	public Object getRoot() {
		return root;
	}

	public Object getChild(Object parent, int index) {
		File directory = (File) parent;
		String[] children = directory.list();
		return new TreeFile(directory, children[index]);
	}

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

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

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

	}

	public void valueForPathChanged(TreePath path, Object value) {
		File oldFile = (File) path.getLastPathComponent();
		String fileParentPath = oldFile.getParent();
		String newFileName = (String) value;
		File targetFile = new File(fileParentPath, newFileName);
		oldFile.renameTo(targetFile);
		File parent = new File(fileParentPath);
		int[] changedChildrenIndices = { getIndexOfChild(parent, targetFile) };
		Object[] changedChildren = { targetFile };
		fireTreeNodesChanged(path.getParentPath(), changedChildrenIndices, changedChildren);

	}

	private void fireTreeNodesChanged(TreePath parentPath, int[] indices, Object[] children) {
		TreeModelEvent event = new TreeModelEvent(this, parentPath, indices, children);
		Iterator<TreeModelListener> iterator = listeners.iterator();
		TreeModelListener listener = null;
		while (iterator.hasNext()) {
			listener = iterator.next();
			listener.treeNodesChanged(event);
		}
	}

	public void addTreeModelListener(TreeModelListener listener) {
		listeners.add(listener);
	}

	public void removeTreeModelListener(TreeModelListener listener) {
		listeners.remove(listener);
	}

	private class TreeFile extends File {
		public TreeFile(File parent, String child) {
			super(parent, child);
		}

		public String toString() {
			return getName();
		}
	}
}
 

Michael...

Top Contributor
Du kannst ja einen Dummyknoten "ist leer" drunter hängen ;-)

Und jetzt ernsthaft:
Die Darstellung der Knoten wird durch einen TreeCellRenderer festgelegt. Definiere einen eigenen der von DefaultTreeCellRenderer erbt. In dessen getTreeCellRendererComponent(...) holst Du Dir das UserObject des Knotens castest es nach File (vorausgesetzt Du steckst auch File Objekte in die Knoten) und überprüfst mit isDirectory() ob es sich um ein Verzeichnis handelt, dem entsprechend setzt Du dann das Icon. Soviel zur Theorie Codebeispiele sollten hier im Forum und erst recht im www ausreichend zu finden sein.
 

Devil_Noe

Mitglied
Danke vorerst mal!

Der Tree ist mit FileObjekten beladen, damit ich jederzeit an der richtigen Stelle Änderungen vornehmen kann! Also werd ich mich mal mit dem Renderer beschäftigen!

.... grübelbrübel
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Eine Funktion zuweisen Java Basics - Anfänger-Themen 3
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
M Referenzen zuweisen und wird gleichzeitig ausgeführt Java Basics - Anfänger-Themen 6
C Fehlermeldung Array zuweisen und printen Java Basics - Anfänger-Themen 22
districon 2D Array - Länge zuweisen Java Basics - Anfänger-Themen 1
N LocalTime einem Objekt zuweisen Java Basics - Anfänger-Themen 2
S Erste Schritte Button einen Wert zuweisen & diesen ausgeben Java Basics - Anfänger-Themen 2
M Enum-Variable HashMap zuweisen Java Basics - Anfänger-Themen 5
E Eigenschaften Werte, in einer anderen Klasse, zuweisen Java Basics - Anfänger-Themen 40
J Wie kann ich z.B. einem int-Wert einen String-Wert zuweisen? Java Basics - Anfänger-Themen 2
J Objekt erste freie Stelle zuweisen Java Basics - Anfänger-Themen 3
B Vererbung Abgeleitete Klassen Bestimmter Typ zuweisen Java Basics - Anfänger-Themen 2
P Schlüsselworte Zählen und Zuweisen von eingelesenen Zahlen Java Basics - Anfänger-Themen 1
J Wert eines Arrays einer Variable zuweisen, sobald der Wert eines anderen Arrays eintritt Java Basics - Anfänger-Themen 2
M Objekt Name für MethodenAufruf nachträglich zuweisen? Java Basics - Anfänger-Themen 2
B Array Werte zuweisen Java Basics - Anfänger-Themen 4
K Klassen Nachträglich ein Objekt einem anderen zuweisen, geht das? Java Basics - Anfänger-Themen 2
A Threads Threads bestimmte Aufgaben zuweisen... Java Basics - Anfänger-Themen 3
D Kopierten Objekt Werte zuweisen Java Basics - Anfänger-Themen 4
MiMa Datentyp Short Wert zuweisen über Methode Java Basics - Anfänger-Themen 2
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
M Threads Jede Klasse einem Thread zuweisen Java Basics - Anfänger-Themen 7
P Gleichverteilung umgehen, Werte nacheinader zuweisen? Java Basics - Anfänger-Themen 1
J Zeilen aus einer .txt-Datei auslesen und Variablen zuweisen Java Basics - Anfänger-Themen 11
S Label Wert zuweisen Java Basics - Anfänger-Themen 8
T Ein String eine Zahl zuweisen Java Basics - Anfänger-Themen 15
K per Methoden Werte zuweisen Java Basics - Anfänger-Themen 3
A booelan Wert zuweisen Java Basics - Anfänger-Themen 2
P String Zeichen zuweisen Java Basics - Anfänger-Themen 3
U JButton: Beschriftung ueber Variable zuweisen Java Basics - Anfänger-Themen 6
B Variablen Instanz von Enum zur Laufzeit erstellen und zuweisen Java Basics - Anfänger-Themen 2
0 OOP Attributwerte besser im Konstruktor oder vorher zuweisen? Java Basics - Anfänger-Themen 6
T Zahlen zuweisen Java Basics - Anfänger-Themen 3
I Dynamisch erzeugten Buttons Methoden zuweisen Java Basics - Anfänger-Themen 6
S OOP Einem Objekt ein Objekt zuweisen Java Basics - Anfänger-Themen 6
J Einem String-Array in einer for-Schleife Strings zuweisen - Klappt nicht in einer for-Schleife Java Basics - Anfänger-Themen 5
P Instanzvariablen mögliche Werte zuweisen Java Basics - Anfänger-Themen 6
E Variable neue Random Zahl zuweisen, wenn Button geklickt Java Basics - Anfänger-Themen 5
M Threads bestimmten Kernen zuweisen? Java Basics - Anfänger-Themen 7
P Einem Double-Objekt einen float-Wert zuweisen Java Basics - Anfänger-Themen 2
T Werte in Hashtable neu zuweisen Java Basics - Anfänger-Themen 3
P Variablen Variable in if Bedingung anlegen, Wert zuweisen und diesen als Bedingung nutzen Java Basics - Anfänger-Themen 4
xehpuk Compiler-Fehler final Variable in try-catch Wert zuweisen Java Basics - Anfänger-Themen 8
M Verständnisfrage: Objekt erzeugen u. zuweisen Java Basics - Anfänger-Themen 16
S Aktionen Zahlen zuweisen Java Basics - Anfänger-Themen 3
M JLabel attribut wert zuweisen Java Basics - Anfänger-Themen 2
C Objekt einem anderen Objekt zuweisen Java Basics - Anfänger-Themen 9
H JEditorPane: Textformate (RTF) zuweisen Java Basics - Anfänger-Themen 4
P Wie mehreren Threads Aufgaben zuweisen und abarbeiten lassen? Java Basics - Anfänger-Themen 15
K Einer Variablen Werte von anderen Variablen zuweisen Java Basics - Anfänger-Themen 5
M String-Array-Element wieder null zuweisen Java Basics - Anfänger-Themen 16
0 jButtons einen Int wert zuweisen MineSweaper Java Basics - Anfänger-Themen 3
N Bilder Objekten zuweisen Java Basics - Anfänger-Themen 2
T Java-Datenstruktur: zuweisen von Strings auf Listen von Strings Java Basics - Anfänger-Themen 10
C Swing, Buttons Wert zuweisen Java Basics - Anfänger-Themen 3
E Gezeichneten Objekten Werte zuweisen Java Basics - Anfänger-Themen 13
I Integer neuen wert zuweisen Java Basics - Anfänger-Themen 2
R Combox item Variable zuweisen Java Basics - Anfänger-Themen 5
Ö args zuweisen Java Basics - Anfänger-Themen 2
I Color-Objekt neuen Wert zuweisen Java Basics - Anfänger-Themen 3
S Klickhandler mit Forschleife zuweisen Java Basics - Anfänger-Themen 6
S von textdatei variaben zuweisen Java Basics - Anfänger-Themen 2
R Button Funktion zuweisen Java Basics - Anfänger-Themen 2
N Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
T Array einem Array zuweisen Java Basics - Anfänger-Themen 8
C HashMaps zuweisen Java Basics - Anfänger-Themen 4
D wie kann ich deutschen Tasten einen KeyCode zuweisen? Java Basics - Anfänger-Themen 2
M Array, Int-wert Ziffer je Position zuweisen Java Basics - Anfänger-Themen 3
F Byte 0 und 1 einzelnd zuweisen? Java Basics - Anfänger-Themen 17
B String einem Chararray zuweisen Java Basics - Anfänger-Themen 2
J Array: Jedem Element direkt denselben Wert zuweisen Java Basics - Anfänger-Themen 6
G Boolean Wert zuweisen Java Basics - Anfänger-Themen 1
G List einer ArrayList zuweisen. Java Basics - Anfänger-Themen 5
E Array Werten Icons zuweisen Java Basics - Anfänger-Themen 3
M Bild Mauslistener zuweisen Java Basics - Anfänger-Themen 2
K Einer Methode etwas zuweisen Java Basics - Anfänger-Themen 22
C Objekt soll sich selber einer Variablen zuweisen. Java Basics - Anfänger-Themen 6
F Socket Instanz auf Klasse welche von Socket erbt zuweisen Java Basics - Anfänger-Themen 3
F Einer char-Variable "leeren" Inhalt zuweisen Java Basics - Anfänger-Themen 4
B Variablen Wert zuweisen aus jTextField Java Basics - Anfänger-Themen 9
B Klassenvariable zuweisen in Konstrktor Java Basics - Anfänger-Themen 2
S einer Variable KEINEN Wert zuweisen? Java Basics - Anfänger-Themen 7
J [Datumsklasse ] Probleme mit dem Zuweisen eines Monats Java Basics - Anfänger-Themen 4
M OOP frage, private variablen default-wert zuweisen sinnvoll? Java Basics - Anfänger-Themen 5
B BigInteger: Wert per Methode zuweisen Java Basics - Anfänger-Themen 3
V Tastatureingabe einlesen und zuweisen Java Basics - Anfänger-Themen 2
G Mehreren Textfeldern Zeichenketten zuweisen Java Basics - Anfänger-Themen 3
V Zahlen sortieren und String zuweisen Java Basics - Anfänger-Themen 7
G Dem array automatisch werte von -10 bis +10 zuweisen Java Basics - Anfänger-Themen 6
M Probleme beim Zuweisen eines Arbeitsverzeichnis Java Basics - Anfänger-Themen 2
J Punkte Noten zuweisen Java Basics - Anfänger-Themen 6
N ActionListener versch. Buttons zuweisen => versch. Method Java Basics - Anfänger-Themen 13
D JList - Textzeilen MouseListener zuweisen Java Basics - Anfänger-Themen 4
S Schließen-Button bei awt.Frame Funktion zuweisen Java Basics - Anfänger-Themen 6
D Button KeyEvent zuweisen. Java Basics - Anfänger-Themen 15
M Einem JButton einen Wert zuweisen? Java Basics - Anfänger-Themen 6
F Einem Array Werte zuweisen. (illegal start of expression) Java Basics - Anfänger-Themen 4
C addMouseListener in einer Schleife zuweisen Java Basics - Anfänger-Themen 3
D Objekten ihre Eigenschaften zuweisen Java Basics - Anfänger-Themen 3
G StringTokenizer - jedem Zeichen einen Bezeichner zuweisen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben