JMenu aus Ordnern

  • Themenstarter Themenstarter Rustika
  • Beginndatum Beginndatum
R

Rustika

Gast
Hallo,

Vor ein paar Tagen habe ich hier im Forum den Tipp bekommen
Dass ich mit Hilfe von File auf einfache Weise Ordner auslesen kann.
Das funktioniert auch super.

Allerdings möchte ich aus den eingelesenen Ordnern und Files ein
JMenu zusammenstellen und bastle seit zwei Tagen an einem
Algorithmus dafür.... Leider bisher ohne Erfolg.
Das Jmenu soll ganz genau so strukturiert sein wie meine Ordner
Und Files....

Gibt es da vielleicht schon was fertiges oder hat jemand schon
Einmal ähnliches gemacht?
 
Ich glaube nicht, dass es was Fertiges gibt. Aber das ist auch keine unlösbare Aufgabe.

Mit
Code:
File.listFiles()
bekommst du alle Ordner und Dateien eines Ordners. Über eine for-Schleife sollte es daher einfach möglich sein hier pro Eintrag ein JMenu bzw. JMenuItem zu erstellen.
Im zweiten Schritt würde ich mich dann drum kümmern, wie es Submenüs aus den weiteren Unterordnern erstellt. Rekursion ist hier sicher der korrekte Ansatzpunkt.
 
Hi,

Das Problem an der Sache ist, dass ich vorher eigentlich
Nicht weiß, wie viele Ordner und Unterordner es geben
Wird. Es sei denn ich gehe diese Tausend Ordner durch
Und zähle alle.
Deshalb weiß ich natürlich auch nicht, wie viele JMenus
Ich erstellen muss und welches JMenu submenu eines
Anderen jMenus ist.

Ich habe das jetzt so gelöst, indem ich mit File.listFiles()
Über alle Ordner und Unterordner rekursiv iteriere und die
Pfade zu den Files in ein String-Array schreibe.

Zusätzlich speihere ich zu jedem Pfad die Informationen:

- wie tief (also wie viele Unterordner ( kann man durch die '\' ermitteln))
- ob es sich um einen Ordner oder ein File handelt

Anschließend kann ich die Informationen aus dem String-Array
Auslesen und an Hand der Daten, die JMenus und so weiter
Erstellen. Wenn ich meinen Laptop wieder bei mir habe kann
Ich ja mal den Code posten.

Grüße
 
Ist das nicht etwas doppelte Arbeit? Du kannst die Menüs doch direkt beim iterieren über die listFiles() erzeugen.
Gut, ein Problem ist sicherlich die Größe/Tiefe der Verzeichnisse ... ich weiß nicht welcher tiefere Sinn dahinter steckt, aus einem Verzeichnisbaum ein Menübaum zu machen (von einem JTree mal abgesehen).

Codetechnisch stelle ich mir das Vorgehen etwa wie folgt vor:
Java:
// achtung: nicht auf korrektheit geprüft
public void createMenu(File basedir, JMenu parent) {
    for (File file : basedir.listFiles()) {
        if (file.isFile()) {
            parent.add(new JMenuItem(file.getName()));
        }
        else {
            JMenu submenu = new JMenu(file.getName());
            this.createMenu(file, subMenu);
            parent.add(submenu);
        }
    }
}
 
Ähhhmm..... *hust*

das war tatsächlich so einfach.....
hmmm... ich danke dir.

Muss jetzt schwer darüber nachdenken warum
mein Verstand nicht selber diese Lösung gefunden
hat.....
 

Zurück
Oben