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

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
User avatar
Spy
Kilobyte level
Kilobyte level
Posts: 443
Joined: Mon Dec 12, 2005 9:40 pm
Academic status: Alumnus/a
Gender:
Location: Ε-75, Ε-65, Ε-90
Contact:

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

Post by Spy » Sun Mar 08, 2009 7:39 pm

Σας παραθέτω τον κώδικα:
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" μπορείς.
Γιατί συμβαίνει αυτό;
User avatar
cyberpython
Mbyte level
Mbyte level
Posts: 654
Joined: Wed Nov 21, 2007 8:18 pm
Academic status: Alumnus/a
Gender:
Location: Αθηνα
Contact:

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

Post by cyberpython » Sun Mar 08, 2009 8:55 pm

Για την 1η ερώτηση:
Δοκίμασες με

Code: Select all

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

Code: Select all

chooser.showDialog(parent, "Save");
θα πρέπει να δώσει τον τίτλο "Save" και στο παράθυρο και στο κουμπί.
User avatar
Spy
Kilobyte level
Kilobyte level
Posts: 443
Joined: Mon Dec 12, 2005 9:40 pm
Academic status: Alumnus/a
Gender:
Location: Ε-75, Ε-65, Ε-90
Contact:

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

Post by Spy » Sun Mar 08, 2009 9:11 pm

Ευχαριστώ cyberpython, απλά δεν είχα προσέξει το showOpenDialog....

Τώρα ψάχνω να βρω γιατί δεν επιτρέπει την δημιουργία φακέλων σε οποιαδήποτε directories!
User avatar
cyberpython
Mbyte level
Mbyte level
Posts: 654
Joined: Wed Nov 21, 2007 8:18 pm
Academic status: Alumnus/a
Gender:
Location: Αθηνα
Contact:

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

Post by cyberpython » Sun Mar 08, 2009 9:18 pm

Άδικα κουράζεσαι... Είναι bug...
Υπάρχει "λύση" - δες εδώ: http://bugs.sun.com/bugdatabase/view_bu ... id=4847375
Post Reply

Return to “Προγραμματισμός”