Swing Tree wird nicht angezeigt

Status
Nicht offen für weitere Antworten.

gneck

Mitglied
Hallo zusammen, nachdem ich eine Zeit schon hier mitlese und viele Tips erhalten habe, stecke ich jetzt in einem Problem fest und hoffe auf Eure Mithilfe.
Ich versuche, einen DJ-Mixer zu programmieren. Dieser soll aus zwei Audio-Playern bestehen, die unabhängig voneinander Files laden und abspielen können. Daher bekommt jeder Player ein eigenes JTabbedPane, in dem man ihn bedienen kann. In jedem dieser Panes soll ein Tab einen Tree zum Durchsuchen des Dateisystems enthalten. Ich habe also eine Klasse geschrieben, die JTabbedPane erweitert. Dieses JTabbedPane wird auch angezeigt ganz nach meinen Wünschen, was nicht erscheint ist der Tree. Was mache ich falsch? Die Konsole gibt alle Datei- und Verzeichnisnamen richtig aus.
Hier das Listing:
Java:
package view;

import java.io.File;

import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

public class FileChooser extends JScrollPane 
{
	private static final long serialVersionUID = 6L;
	File[] rootList = File.listRoots();
	
	public FileChooser(int v, int h)
	{
		super(v, h);
		DefaultMutableTreeNode root = new DefaultMutableTreeNode("System");
		for (int drive = 0; drive  < rootList.length; drive ++)
		{
			DefaultMutableTreeNode tn = new DefaultMutableTreeNode(rootList[drive].getPath());
			root.add(tn);
			System.out.println(rootList[drive].getPath());
			File[] dirList = rootList[drive].listFiles();
			if (dirList != null)
			{
				for (int dir = 0; dir < dirList.length; dir ++)
				{
					if (dirList[dir].isDirectory())
					{
						DefaultMutableTreeNode subDir = new DefaultMutableTreeNode(dirList[dir].getName());
						System.out.println(dirList[dir].getName());
						tn.add(subDir);
					}
					else
					{
						DefaultMutableTreeNode subDir = new DefaultMutableTreeNode(dirList[dir].getName());
						System.out.println(dirList[dir].getName());
						tn.add(subDir);
					}
				}
			}
		}
		JTree tree = new JTree(root);
		this.add(tree);
	}
}
Schonmal Danke für eure Hilfe, ich habe schon das halbe Web durchsucht, auch das JTree-Tutorial auf dieser Seite, aber irgendwie habe ich wohl ein Brett vorm Kopp.
 
Kann in dem Code keinen Fehler entdecken wird die ScrollPane irgendwo verwendet bzw. eingebaut?
Btw. das ist das erste Mal, dass ich sehe, dass jemand von JScrollPane ableitet - auf die Idee bin ich noch nicht gekommen.

Dass in der innersten Bedingungsabfrage der if und else Zweig das selbe machen ist nur für den erstmaligen Test so??
 
Benutze setViewportView() und nicht add().
Warum leitest du deine Klassen überhaupt von JScrollPane und JTabbedPane ab?
 
Hurra und vielen Dank, der viewportView war der Bringer.

@Michael...: Die Knotenproduziererei in der if...else Anweisung wird wohl eine eigene Methode werden, die sich wieder selbst aufruft, wenn dann der besagte Knoten ein Verzeichnis und keine Datei ist.
 
Sorry, ModellbahnerTT, hatte deine Frage überlesen: In jedem JTabbedPane soll die komplette Bedienung eines Players stattfinden, also in einem Tab die Dateiauswahl, ein weiterer Tab zum Bearbeiten Playlist usw.. Wahrscheinlich kommt in den Tab "Dateiauswahl" nicht nur die ScrollPane zu liegen, sonder auch noch einige Buttons, so das der hier besprochene "FileChosser" eigentlich "Dateisytembaum" heissen müsste.
Welche Vorgehensweise würdet Du denn vorschlagen?
Ich muss dazusagen: Ich bin blutiger Neuling und bin froh, überhaupt erst mal das Prinzipielle verstanden und die ersten Programme ans Laufen bekommen zu haben.
 
Die auf den einzelnen Reitern darzustellenden Komponenten jeweils in einem JPanel zusammenfassen und diese Panels in die TabbedPane einfügen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben