Σας παραθέτω τον κώδικα:
- 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" μπορείς.
Γιατί συμβαίνει αυτό;