JFileChooser Verhalten -Pfad

osion

Bekanntes Mitglied
Hallo

Situation:

Ich habe ein Standartverzeichnis, welches automatisch genommen wird, ausser man wählt ein benutzerspezifisches.


  1. Ich habe ein JFileChooser und der fragt nach einem Verzeichnis
  2. Er speichert den Pfad in einem String und gibt dies zu einem Object File weiter
  3. Object file macht ein rename in einem neues Verzeichniss (also verschiebt die Datei).

Wenn ich über die JFileChooser Menüstruktur den Pfad auswähle geht alles gut, d.h. nimmt die Datei und schiebt sie in den Ordner t1.

Problem: Wenn ich den Pfad im Feld Ordnername reinkopiere, z. B. t1, so verschiebt er den Ordner und die Datei ins Standartverzeichnis (hier😀ateiordner, siehe picture).

Folgendes Vorgehen mit gleichem Ergebnis:
  1. Ich wähle den Ordner über JFileChooser aus und kopiere den vom System angezeigten Pfad im Field Ordnername und kopiere in direkt wieder rein.
  2. Kopiere Pfad aus dem Windows Ordner über Windows und kopiere in den JFileChooser Field Ordnername rein.

Frage: Was ist der Unterschied für JFile Chooser wenn ich den Pfad über die Menustruktur angebe, oder reinkopiere?
 
Kannst du ein KSKB schreiben? Scheint offenbar ein kleineres Problem zu sein aber ganz nachvollziehen kann ich dein Problem nicht.
 
könnte daran liegen das bei copy'n'paste des pfades in das text-field ein event fehlt was sonst beim klicken mit der maus ausgelöst wird

wäre nicht das erstmal das n swing-komponente so design-schlecht und fehlerhaft implementiert wäre

das korrekte verhalten wäre natürlich trotzdem den pfad im text-field auszuwerten ... wobei ich hier von ausgehe das es vermutlich nicht als input sondern eher nur als bestätigender output gedacht ist
 
Wie lawila schon sagte, fehlt da glaub ich ein Event.
Hast du den Pfad schon mal in das Textfeld reinkopiert und "ENTER" gedrückt? Oder wird da Default der OK-Button ausgelöst?
 
naja, wenn man nur copy'n'paste in das text-field reinkopiert wird erstmal in soweit nur der input-listener des text-field selbst ausgelöst um halt den text einzufügen ... mehr nicht

wenn man jedoch mit der maus durch das system navigiert wird ja sowohl bei jedem move (was glaube ich nicht von belang ist) und spätestens beim klicken ein entsprechendes event ausgelöst
trifft dieses event auf eine auswählbare komponente (also einen file-eintrag) so wird dies selektiert und der aktuelle pfad auf dieses gelegt

ich denke das hier wirklich ein design-flaw im filechooser an sich liegt das bei copy'n'paste in das text-field und anschließendem fire-event (egal ob mit enter oder per klick auf approve) das text-field nicht mehr korrekt ausgewertet wird ... vor allem dann nicht wenn ein ganzer pfad drin steht

man könnte mal ausprobieren ob java clever genug ist einen pfad aufzulösen wenn durch drücken von enter im textfield das action-event ausgelöst wird (sofern überhaupt dort ein action-listener registriert ist)
 
Stock aus dem ***** ziehn soll auch schon geholfen haben.
Und jetzt zitier mir bitte noch die Zeile in der das steht, kanns nicht finden.
 
nun, joose hat dies ja nun schon für mich übernommen, aber um es dir noch mal zu erklären

ich habe dir den link zur aktuellen java-doc v8 gegeben
es ist hier die rede vom javax.swing.JFileChooser
also klickt man sich über das package javax.swing zur doc des JFileChooser
und geht dort dann die möglichen setter (da wie ich schrieb "man den filechooser auf directory-only setzt", was einen setter impliziert)
da setter in den standard-klassen nach java-convetions immer mit "set..." beginnen schränkt dies schon mal die auswahl möglicher methoden etwas ein
so ... nun kombiniert man noch mit etwas gesundem menschen verstand : "man will den modus bestimmen welche art von einträgen ausgewählt werden können" ... übersetzt das grob ins englische und kommt so auf setFileSelectionMode

du siehst also : mit etwas englisch und einer hand voll sachverständnis kommt man von ganz alleine drauf


dennoch dank an Joose das er sich trotzdem die mühe gemacht hat um dir faulpelz auf die sprünge zu helfen
 
Ich kann mich nicht erinnern gefragt zu haben, wie man den Auswahlmodus ändert. Und die Antwort zu meiner Frage steht auch nicht in der JavaDoc - auch wenn du mir die Antwort trotzdem bereits anderweitig geliefert hast.
 
Ich kann mich nicht erinnern gefragt zu haben, wie man den Auswahlmodus ändert. Und die Antwort zu meiner Frage steht auch nicht in der JavaDoc - auch wenn du mir die Antwort trotzdem bereits anderweitig geliefert hast.

ach ... du hast nicht gefragt wie man den auswahl modus ändert ... komisch ... dann hab ich folgendes wohl falsch verstanden

Wie kriegst du es hin, das dort "Ordnername" angezeigt wird?
Bei mir steht an der selben Stelle "Dateiname" unter Win7.

für mich ist das die eindeutige frage danach wie man es hinbekommt dem filechooser zu sagen das er als auswahl nur ordner zulassen soll ... und die antwort auf diese frage steht wie mitlerweile lang und breit erklärt sehr wohl in der doc ... womit auch deine zweite aussage das dies nicht der fall sei widerlegt ist

sollte ich deine "frage" also missverstanden haben bin ich für aufklärung dankbar
 
[QUOTE=Joose;1029213]Wie lawila schon sagte, fehlt da glaub ich ein Event.
Hast du den Pfad schon mal in das Textfeld reinkopiert und "ENTER" gedrückt? Oder wird da Default der OK-Button ausgelöst?[/QUOTE]

Hey

Also das Programm funktioniert wie folgt:

1. Datei Auswählen (JFileChooser 1)
2. Datei speichern Standard PFad angeben (JFileChooser 1)
3. Für Datei X spezieller Pfad angeben (JFileChooser 1)

Ich weiss nicht genau wo das Problem liegt, weil der FileChooser später weiterverarbeitet wird und erst viel später das Verschieben erfolgt.

Ich muss den Ablauf genauer anschauen


Problem

Ich kann soweit sagen, dass ich es bei meinem Programm immer wiederholen kann, wie am Anfang beschrieben. Der Code ist sehr lange wo ich brauche, aber ich versuche eine einfachere Variante sobald wie möglich zu posten.
 
gut ... nur um noch mal bezug zum eingangspost zu nehmen : du verwendest EINEN chooser (schon mal sub-optimal, aber nicht weiter tragisch da du ja nach jedem schritt den pfad in einer anderen variable speichern kannst) um verschiedene ORDNER auszuwählen

dabei tritt das problem auf das wenn du dich "durchklickst" alles funktioniert, wenn du aber den pfad per copy'n'paste reinkopierst es nicht passt

da erstmal die frage : was kommt denn als return zurück ? NULL ... also ob "nichts ausgewählt wurde" ... das was du reinkopiert hast ? ... was völlig anderes ?

wäre schon mal gut zu wissen um analysieren zu können was der chooser da macht

dann auch weiterhin : was machst du nach dem du den pfad reinkopiert hast ? drückst du dann enter noch im text-field oder klickst du mit der maus auf ok ? ... oder sogar über tab ?


und : ist der pfad den du reinkopierst dann überhaupt gültig zu dem der aktuell angezeigt wird ? sind es realtive oder absolute pfade ? irgendwelche nicht-erlaubten zeichen drin ?


ist halt schwierig zu analysieren wenn wenig infos vorliegen
 
gut ... nur um noch mal bezug zum eingangspost zu nehmen : du verwendest EINEN chooser (schon mal sub-optimal, aber nicht weiter tragisch da du ja nach jedem schritt den pfad in einer anderen variable speichern kannst) um verschiedene ORDNER auszuwählen

dabei tritt das problem auf das wenn du dich "durchklickst" alles funktioniert, wenn du aber den pfad per copy'n'paste reinkopierst es nicht passt

da erstmal die frage : was kommt denn als return zurück ? NULL ... also ob "nichts ausgewählt wurde" ... das was du reinkopiert hast ? ... was völlig anderes ?

wäre schon mal gut zu wissen um analysieren zu können was der chooser da macht

dann auch weiterhin : was machst du nach dem du den pfad reinkopiert hast ? drückst du dann enter noch im text-field oder klickst du mit der maus auf ok ? ... oder sogar über tab ?


und : ist der pfad den du reinkopierst dann überhaupt gültig zu dem der aktuell angezeigt wird ? sind es realtive oder absolute pfade ? irgendwelche nicht-erlaubten zeichen drin ?


ist halt schwierig zu analysieren wenn wenig infos vorliegen

Also ich habe das jetzt mal getestet und folgendes festgestellt:

Info: Jeder Pfad ist ein JFileChooser Ausgabe per Console
Standart das Problem auftaucht:

1. Pfad 1 wird ausgewählt (Ort des Ordners)
19146281ja.jpg


2 Pfad 2 wird ausgewählt speicherung der Datei
19146282hr.jpg


3.Pfad 3 wird ausgewählt (speicherung der File erfolgt nur wenn Option in der GUI aktiviert wurde)

  1. Wähle Pfad aus von Pfad 2
  2. Kopiere den Pfad welcher im JFileChooser angezeigt wird und füge ihn direkt wieder ein
  3. Ändere den Pfad (beispiel) von test1 zu test2 (per Tastatur)
  4. Enter

19146283vz.jpg


Ergebnis:
19146284un.jpg


Was er tun sollte: File in Pfad 3 verschieben


Ich habe noch eine Ausgabe per Console gemacht:

Ergebnis ist das Gleiche aber die Konsolenausgabe ist verschieden.

Pfad 3 JFileChooser per Enter Save
Pfad1 öffnen C:\Users\Downloads
Pfad2 speichern C:\Users\Downloads\test2
PFAD 3: null

Pfad 3 JFileChooser per Button Save
Pfad1 öffnen C:\Users\Downloads
Pfad2 speichern C:\Users\Downloads\test1
PFAD 3C:\Users\Downloads\test2
 
Zuletzt bearbeitet:
gut ... dann brauchen wir definitiv mal deinen code bzw ein kurzes beispiel bei dem der fehler auftritt ... weil wenn ich mir jetzt schnell n sample-code zusammen klicke dann funktioniert alles wie gewollt > fehler muss in deinem code stecken
 

Zurück
Oben