I have a program utilizing a JFileChooser. To be brief, the full program is a GUI which allows users to manipulate PNGs and JPGs. I would like to make it so that the JFileChoose
You need to construct your JFileChooser
with the directory you want to start in and then pass a FileFilter
into it before setting visible.
final JFileChooser fileChooser = new JFileChooser(new File("File to start in"));
fileChooser.setFileFilter(new FileFilter() {
@Override
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
}
final String name = f.getName();
return name.endsWith(".png") || name.endsWith(".jpg");
}
@Override
public String getDescription() {
return "*.png,*.jpg";
}
});
fileChooser.showOpenDialog(GridCreator.this);
This example filters for files ending in ".png" or ".jpg".
Putting it all into a concise form, here is a flexible file chooser routine. It specifies initial directory and file type and it furnishes the result both as a file or a complete path name. You may also want to set your entire program into native interface mode by placing the setLookAndFeel command at the Main entry point to your program.
String[] fileChooser(Component parent, String dir, String typeFile) {
File dirFile = new File(dir);
JFileChooser chooser = new JFileChooser();
// e.g. typeFile = "txt", "jpg", etc.
FileNameExtensionFilter filter =
new FileNameExtensionFilter("Choose a "+typeFile+" file",
typeFile);
chooser.setFileFilter(filter);
chooser.setCurrentDirectory(dirFile);
int returnVal = chooser.showOpenDialog(parent);
String[] selectedDirFile = new String[2];
if(returnVal == JFileChooser.APPROVE_OPTION) {
// full path
selectedDirFile[0] = chooser.getSelectedFile().getPath();
// just filename
selectedDirFile[1] = chooser.getSelectedFile().getName();
}
return selectedDirFile;
}
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
e.printStackTrace();
}