import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
/**
* shows a OpenFileDialog
*/
public class OpenFileDialog
{
private ArrayList<String> _extensiontext = new ArrayList<>();
private ArrayList<String> _extension = new ArrayList<>();
/**
* shows OpenFileDialog
* @param path initial path, may be null
* @return selected file
*/
public File showDialog(String initialpath)
{
if ((initialpath == null) || (initialpath.length() == 0))
{
initialpath = System.getProperty("user.home");
}
final JFileChooser c = new JFileChooser(initialpath);
c.setDialogTitle("Select file");
c.setDialogType(JFileChooser.OPEN_DIALOG);
c.setFileSelectionMode(JFileChooser.FILES_ONLY);
// add filters
for (int i = 0; i < _extensiontext.size(); i++)
{
FileNameExtensionFilter ff = new FileNameExtensionFilter(_extensiontext.get(i), _extension.get(i));
c.setFileFilter(ff);
}
// show dialog
c.setVisible(true);
File f = null;
// if "ok" or "yes" pressed
if (c.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
{
// get selected file
f = c.getSelectedFile();
}
// close dialog
c.setVisible(false);
return f;
}
/**
* adds FileNameExtensionFilter
* @param text Filtertext, e.g. "Textfiles (*.txt)"
* @param ext Filterextension, e.g. "txt"
*/
public void addExtension(String text, String ext)
{
_extensiontext.add(text);
_extension.add(extension);
}
}
Aufruf:
OpenFileDialog fd = new OpenFileDialog();
// add an extension
fd.addExtension("Textfiles (*.txt)", "txt");
// open dialog and get selected file
File f = fd.showDialog(null);