Toon posts:

[Java] FileDialog Dilemma

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

ik zit met het volgende probleem,
Ik maak in mijn programma gebruik van een filedialog:
code:
1
FileDialog fd = new FileDialog(f, title, FileDialog.LOAD);


Normaal gesproken check ik met het volgende statement of er op de OK knop of de cancel knop is gedrukt.
code:
1
if(fd.getFile() != null)

Dit geeft echter problemen, in Linux. Wanneer iemand dan bladert in subdirectory's, wordt automatisch de filename die hij invoert geleegd. Dit resulteert erin, dat ook wanneer hij op de OK knop drukt, ik dezelfde reactie krijg als wanneer hij op de CANCEL knop klikt. Dit wil ik op een of andere manier zien op te vangen. Weet iemand hoe?

BVD Jan

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op woensdag 11 maart 2009 @ 00:18:
Dit resulteert erin, dat ook wanneer hij op de OK knop drukt, ik dezelfde reactie krijg als wanneer hij op de CANCEL knop klikt.
Dus als er OK wordt geklikt maar er is geen filenaam geselecteerd krijg je null terug? Dan geef je een melding dat je een filename wil hebben en opent de FileDialog desnoods opnieuw :?

Edit... d'oh @heropenen FileDialog... anders kun je natuurlijk niet cancellen :+

En anders zoiets:

Java:
1
<hier stond onzin>

Hmmmz, mijn Java-kennis is te karig om hier zinnige uitspraken over te doen merk ik wel :P

Edit 2892: Damn I need some sleep
Je ziet natuurlijk het verschil tussen OK en cancel niet als name == null... tja...

De .Net FileDialog geeft een DialogResult terug maar ik begrijp dat dat bij Java niet zo is ?

En anders denk ik dat het niet eens zo héél vreselijk is als de OK wordt afgehandeld als een Cancel wanneer er geen file geselecteerd is, toch? Feitelijk komt 't op hetzelfde neer: er is geen file geselecteerd... Ik denk zelfs dat 't "by design" is: getFile():
public String getFile()

Gets the selected file of this file dialog. If the user selected CANCEL, the returned file is null.

Returns:
the currently selected file of this file dialog window, or null if none is selected

[ Voor 125% gewijzigd door RobIII op 11-03-2009 00:45 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het probleem zit hem in het feit dat iedere keer wanneer je op een Linux Systeem een andere submap kiest, wordt het naam veld automatisch geleegd. Wanneer een gebruiker dit niet doorheeft, zou iedere keer wanneer hij op OK drukt, dit worden beschouwd als een cancel. Dat wil ik voorkomen.

Mijn vraag is daarom, weet iemand afgezien van de return value die ik krijg wanneer er op cancel wordt geklikt, een andere manier om te achterhalen op welke knop van dit dialog is geklikt..?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 07:34

momania

iPhone 30! Bam!

Wanneer de gebruiker op OK clickt geeft getDirectory() ook altijd nog een resultaat dacht ik. Bij cancel zijn zowel getFile() als getDirectory() null.

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bij Cancel krijg je gewoon een directory door gespeeld, dus daar kan je niet op rekenen...

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Is er een reden dat je van AWT gebruik moet maken? AWT is al jaren deprecated een en aantal zaken werken zoals hier gewoon niet lekker. Als je van Swing gebruik maakt, en specifiek javax.swing.JFileChooser, kun je gewoon opvragen welke knop gebruikt is.

http://java.sun.com/javas...x/swing/JFileChooser.html

https://niels.nu


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Verwijderd schreef op woensdag 11 maart 2009 @ 01:14:
Het probleem zit hem in het feit dat iedere keer wanneer je op een Linux Systeem een andere submap kiest, wordt het naam veld automatisch geleegd. Wanneer een gebruiker dit niet doorheeft, zou iedere keer wanneer hij op OK drukt, dit worden beschouwd als een cancel. Dat wil ik voorkomen.
Je toont een dialoogvenster aan de gebruiker waarmee hij een specifiek bestand moet openen. Wanneer er geen bestand wordt geselecteerd (of wanneer naar een andere map wordt gebladerd) en de gebruiker klikt op de ok-knop dan krijg je een lege bestandsnaam...

Wat verwacht je dan? Dat zodra er op een map wordt gedubbelklikt dat het eerste bestand in die map wordt geselecteerd, voor het geval de gebruiker te dom is om het juiste bestand aan te klikken? Dat gedrag zat in Office '95 als ik me niet vergis, en dat hebben ze er niet voor niks uitgesloopt bij de opvolgende versies.

Geen bestand selecteren => geen bestand openen. Je programma moet niet voor je gebruiker gaan denken.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...

Pagina: 1