Swing JFileChooser best. Ordner wie Dateien behandeln

schdief06

Mitglied
Hallo zusammen,

ich schreibe gerade an einem kleinen Aufgabenverwaltungstool. Ich kann einzelne Projekte anlegen, in die dann Aufgaben einsortiert werden. Für ein neues Projekt kann man einen Speicherort auswählen, in welchem dann ein Ordner mit Namen <Projektname>.proj angelegt wird in welchem dann alle Aufgaben abgelegt werden. (Jede Aufgabe in einer anderen Datei, damit man auch einfach mit mehreren Leuten auf dem gleichen Projekt arbeiten kann)

Nun zu meinem eigentlichen Problem:
Um ein bestehendes Projekt zu öffnen verwende ich bis jetzt einen JFileChooser mit Directories only. Allerdings kann ich so ein Projekt nicht mit einem Doppelklick öffnen, sondern ich muss immer den Ordner auswählen und dann auf "Öffnen" klicken.

Was ich gerne hätte:
Ein Ordner der auf .proj endet soll "wie eine Datei" behandelt werden. Heißt wenn ich einen Doppelklick auf diesen Ordner mach soll er nicht betreten werden, sondern direkt geöffnet und zurückgegeben werden.

Nach einigem googlen habe ich dazu nichts gefunden... Hat hier jemand eine Idee wie man das lösen könnte?

Grüße und schon mal vielen Dank
Schdief06
 
Warum erzeugst du nicht einfach eine Datei mit eigener Endung auf die Du filters und zeigst dann diese nur an. Und in der steht dann wo sich der Ordner mit Deinen Projektdateien befindet. Find ich viel sauberer als mit einem Ordner zu arbeiten.

Gruß

Claus
 
Hi Claus,

Danke schon mal. Das wäre eine Idee, gefällt mir aber nicht ganz so gut wenn dann eine quasi "nutzlose" Datei zusätzlich rumliegt.
Für die Lösung mit dem FileChooser fällt dir nichts ein?

Grüße
 
Moin schdief06,

wenn ich dich richtig verstanden habe, willst du also das dein FileChooser den Ordner zurück gibst, auf den du einen Doppelklick machst?
Was mir spontan einfallen würde, wäre deinem JFileChooser einen MouseListener mitzugeben, der prüft ob du 2 mal geklickt hast usw.
Soweit ich mich erinnern kann sollte das so aussehen:
Java:
JFileChooser chooser = new JFileChooser();
chooser.addMouseListener(new MouseListener() {

    // Abstrakten Methoden
    // ..

   @Override
   public void mouseClicked(MouseEvent e)
   {
        if(e.getClickCount() == 2)
        {
             // do some stuff...
        }
   }

});

Ob das klappt kann ich dir nicht sagen - habs noch nicht ausprobiert. Würde mir nur spontan einfallen.

Gruß
Robert
 

Zurück
Oben