JTree mit Dateistruktur und nach Zeit gruppiert

ElJarno

Mitglied
Hi Leute,
wollte mir einen JTree basteln in dem ein bestimmter Ordner von meinem PC abgebildet ist. In diesem Fall sind dort PDFs in unterschielichen Ordner enthalten. Nun sollen diese PDFs in der JTree so wie sie hierarchisch strukuriert sind auch aufgebaut werden. Zudem sollen dies Ordner und Dateien noch durch weitere Vaterknoten ergänzt werden, welche sich aus dem Zeitstempel der Dateien zusammen setzten.
Hat da jemand ne elegante Lösung parat?

Gruß Jan
 
Also,
hier mal mein bisheriger Code:

Code:
	private DefaultMutableTreeNode buildTreeExplorer() {
		DefaultMutableTreeNode root = new DefaultMutableTreeNode("Wurzel");
		Vector<GregorianCalendar> fileDatum = new Vector<GregorianCalendar>();

		File pdfOrdner = new File("C:/testPDFs");
		File[] files = pdfOrdner.listFiles();
		for (File file : files) {
			GregorianCalendar cal = new GregorianCalendar();
			cal.setTimeInMillis(file.lastModified());
			GregorianCalendar tempCal = new GregorianCalendar(cal.get(GregorianCalendar.YEAR), cal
					.get(GregorianCalendar.MONTH), cal.get(GregorianCalendar.DATE));
			if (!fileDatum.contains(tempCal)) {
				fileDatum.add(tempCal);
			}
		}

		Collections.sort(fileDatum);
		SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
		for (GregorianCalendar fDatum : fileDatum) {
			DefaultMutableTreeNode dmtn = new DefaultMutableTreeNode(sdf.format(fDatum.getTime()));
			root.add(dmtn);

			for (File file : files) {
				GregorianCalendar cal = new GregorianCalendar();
				cal.setTimeInMillis(file.lastModified());
				GregorianCalendar tempCal = new GregorianCalendar(cal.get(GregorianCalendar.YEAR),
						cal.get(GregorianCalendar.MONTH), cal.get(GregorianCalendar.DATE));
				if (fDatum.equals(tempCal)) {
					dmtn.add(new FileSystemTreeNode(file));
				}
			}
		}
		return root;
	}

	class FileSystemTreeNode extends DefaultMutableTreeNode {
		private static final long serialVersionUID = 1L;

		public FileSystemTreeNode(File file) {
			setUserObject(file);
		}

		public int getChildCount() {
			return ((File) getUserObject()).list().length;
		}

		public TreeNode getChildAt(int index) {
			return new FileSystemTreeNode(((File) getUserObject()).listFiles()[index]);
		}

		public boolean isLeaf() {
			return !((File) getUserObject()).isDirectory();
		}

		public String toString() {
			return ((File) getUserObject()).getName();
		}
	}

Dieser funktioniert auch schon einigermaßen nur nicht so wie ich mir das ganze vorgestellt habe.
Die obersten Knoten sollen ordner mit dem Datum sein. Darunter sollen alle Dateien abgebildet werden welche dieses Datum beinhalten. Hab ich ja so schon hinbekommen. Nur ist das Problem dass wenn ich Unterordner habe diese an das Datum anegehftet werden an dem die Ordner zuletzt geändert worden sind. Im Prinzip soll das Ganz espäter so aussehen, dass z.B der Unterordner "Test" mit den Dateien A(11.06.2010), B(12.06.2010) und C(13.06.2010) jeweils so aufgebaut werden:

11.06.2010
-> Test
-->A
12.06.2010
->Test
-->B
13.06.2010
->Test
-->C

Vielleicht kann mir jemand dabei weiter helfen.

Gruß Jan
 
Zurück