Page 1 of 1

JFileChooser setDialog(/*type*/) και δικαιώματα

Posted: Sun Mar 08, 2009 7:39 pm
by Spy
Σας παραθέτω τον κώδικα:
Spoiler: εμφάνιση/απόκρυψη
[code] import java.io.File; import javax.swing.JFileChooser; import javax.swing.JFrame; public class ChooseFile { private JFrame extern = new JFrame(); private JFileChooser chooser = new JFileChooser(); public ChooseFile() { extern.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); chooser.setCurrentDirectory(new File(".")); chooser.setFileHidingEnabled(false); }//ChooseFile consrt private void setFilter(){ chooser.setFileFilter(new javax.swing.filechooser.FileFilter() { public boolean accept(File f) { return f.getName().toLowerCase().endsWith(".txt") || f.isDirectory(); } public String getDescription() { return "Text Files"; } }); }//setFilter public String getApath() { chooser.resetChoosableFileFilters(); this.setFilter(); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); int r = chooser.showOpenDialog(extern); if (r == JFileChooser.APPROVE_OPTION) { String name = chooser.getSelectedFile().getPath(); extern.dispose(); return name; }//if return null; }//getApath public String getDestpath() { chooser.resetChoosableFileFilters(); chooser.setDialogType(JFileChooser.SAVE_DIALOG); //********************* chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int r = chooser.showOpenDialog(extern); if (r == JFileChooser.SAVE_DIALOG) { String name = chooser.getSelectedFile().getPath(); extern.dispose(); return name; }//if return null; }//getApath public static void main(String args[]){ ChooseFile ch = new ChooseFile(); try { System.out.println("Open "+ch.getApath()); }catch (NullPointerException nl){} try{ System.out.println("Destination "+ch.getDestpath()); }catch (NullPointerException nl){} System.exit(0); }//main }//ChooseFile [/code]
1η απορία:
ByDefault το dialog του FileChooser είναι για επιλογή αρχείου από κάποιο φάκελο JFileChooser.OPEN_DIALOG
Όταν θέλω να αλλάξω το dialog και να το κάνω για αποθήκευση αρχείου "Save to"

Code: Select all

chooser.setDialogType(JFileChooser.SAVE_DIALOG); 
το κουμπί παραμένει "Open". Γιατί γίνεται αυτό;

2η απορία:
Με το JFileChooser δεν μπορώ να δημιουργήσω new Folder σε οποιαδήποτε directory πχ: Στα Vista: Στο Desktop δεν μπορείς να κάνεις new Folder, όπως επίσης και στα Documents, αλλά στον Φάκελο του χρήστη "USERXXXXX" μπορείς.
Γιατί συμβαίνει αυτό;

Re: JFileChooser setDialog(/*type*/) και δικαιώματα

Posted: Sun Mar 08, 2009 8:55 pm
by cyberpython
Για την 1η ερώτηση:
Δοκίμασες με

Code: Select all

chooser.showSaveDialog( parent );
Επίσης το παρακάτω:

Code: Select all

chooser.showDialog(parent, "Save");
θα πρέπει να δώσει τον τίτλο "Save" και στο παράθυρο και στο κουμπί.

Re: JFileChooser setDialog(/*type*/) και δικαιώματα

Posted: Sun Mar 08, 2009 9:11 pm
by Spy
Ευχαριστώ cyberpython, απλά δεν είχα προσέξει το showOpenDialog....

Τώρα ψάχνω να βρω γιατί δεν επιτρέπει την δημιουργία φακέλων σε οποιαδήποτε directories!

Re: JFileChooser setDialog(/*type*/) και δικαιώματα

Posted: Sun Mar 08, 2009 9:18 pm
by cyberpython
Άδικα κουράζεσαι... Είναι bug...
Υπάρχει "λύση" - δες εδώ: http://bugs.sun.com/bugdatabase/view_bu ... id=4847375