Как ограничить выбор файлов в java конкретными файлами
private void openMenuActionPerformed(java.awt.event.ActionEvent evt) {
DBmanager db = new DBmanager();
if (!db.getCurrentUser().equals("Admin")) {
JOptionPane.showMessageDialog(this, "You are Not Allowed to Run Applications");
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("PDF Documents", "pdf"));
fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("MS Office Documents", "docx", "xlsx", "pptx"));
fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("Images", "jpg", "png", "gif", "bmp"));
fileChooser.setAcceptAllFileFilterUsed(false);
int returnVal = fileChooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
if (Desktop.isDesktopSupported()) {
try {
Desktop.getDesktop().open(file);
} catch (Exception e) {
e.printStackTrace();
}
}
}
} else if (db.getCurrentUser().equals("Admin")) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setAcceptAllFileFilterUsed(true);
int returnVal = fileChooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
if (Desktop.isDesktopSupported()) {
try {
Desktop.getDesktop().open(file);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}// TODO add your handling code here:
}
Привет, ребята.... Я пытаюсь фильтровать файлы в файловом фильтре, установив fileChooser.setAcceptAllFileFilterUsed(false);
. Опция "все файлы" исчезает из FileChooser
, но все файлы остаются видимыми, если вы не выберите вариант из документов PDF, ms Office или images.Я хочу иметь только 3 пользовательских фильтра при открытии выбора файла.
Ответы
Ответ 1
Например, если вы хотите отфильтровать JFileChooser
, чтобы строго отображать наиболее часто используемые файлы изображений, вы должны использовать что-то вроде этого:
FileNameExtensionFilter filter = new FileNameExtensionFilter("Image Files", "jpg", "png", "gif", "jpeg");
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(filter);
Первый аргумент - это описание (что отображается при выборе внизу), а второй аргумент - это неформальные расширения файлов.
Ответ 2
Вы можете использовать FileNameExtensionFilter
для добавления разрешенных расширений в диалоговом окне FileChooser
. Вот пример:
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"JPG & GIF Images", "jpg", "gif");
chooser.setFileFilter(filter);
Для получения дополнительной информации см. Javadocs: FileNameExtensionFilter
Ответ 3
В моем случае мне пришлось поставить
setFileFilter(
new FileNameExtensionFilter("Default file filter", ...)
);
после всех других вызовов метода
addChoosableFileFilter(...);
чтобы сделать setAcceptAllFileFilterUsed (false) работает.
Ответ 4
Это отлично работает в java8.1
JFileChooser dbfilechooser = new JFileChooser();
FileNameExtensionFilter filter1 =
new FileNameExtensionFilter("xls","xls");
FileNameExtensionFilter filter2 =
new FileNameExtensionFilter("xlsx", "xlsx");
FileNameExtensionFilter filter3 =
new FileNameExtensionFilter("csv", "csv");
dbfilechooser.addChoosableFileFilter(filter1);
dbfilechooser.addChoosableFileFilter(filter2);
dbfilechooser.addChoosableFileFilter(filter3);