Java: Показать "* .java" в "Тип файла" по умолчанию в fileChooser - PullRequest
2 голосов
/ 07 марта 2012

У меня есть одна проблема в fileChooser.

когда появляется окно fileChooser, я хочу показать .java в качестве имени по умолчанию в «Тип файла», а в списке я хочу показать * .java, * .class, All File соответственно.

Для этого я использую следующий код:

public class Main {
public static void main(String[] argv) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
JFileChooser fileChooser = new JFileChooser(new File("."));
fileChooser.addChoosableFileFilter(new MyFilter());
fileChooser.addChoosableFileFilter(new MyFilter2());
fileChooser.setAcceptAllFileFilterUsed(true);
fileChooser.showOpenDialog(null);
System.out.println(fileChooser.getSelectedFile());
}
}

class MyFilter extends javax.swing.filechooser.FileFilter {
public boolean accept(File file) {
String filename = file.getName();
return filename.endsWith(".java");
}

public String getDescription() {
return "*.java";
}
}

class MyFilter2 extends javax.swing.filechooser.FileFilter {
  public boolean accept(File file) {
    String filename = file.getName();
    return filename.endsWith(".class");
  }

  public String getDescription() {
    return "*.class";
  }
}

но в этом коде по умолчанию ничего нет в «Файле типа», и в списке он показывает * .java, * .class, All File соответственно. Но я хочу показать имя * .java в качестве имени по умолчанию в "Файл типа".

Когда я изменяю этот код и помещаю fileChooser.setAcceptAllFileFilterUsed (true); выше в fileChooser.addChoosableFileFilter (new MyFilter ()); , тогда все файлы показывают имя по умолчанию в "файле" типа ".

Если вы сохраняете текстовый файл в текстовом редакторе, то там Текстовые документы ( .txt) показываются по умолчанию и в списке Текстовые документы ( .txt) и все файлы там. .

Я хочу то же самое в моем приложении.

Я также прилагаю фотографию, которая дает четкую информацию о том, что я хочу:

Мое приложение работает так:

enter image description here

enter image description here

Но я хочу вот так:

enter image description here

Ответы [ 4 ]

4 голосов
/ 07 марта 2012

Настройка JFileChooser * Возможно, стоит взглянуть на , поскольку это именно то, что вы описываете.

Официальная документация JFileChooser также охватывает вашу проблему.

3 голосов
/ 07 марта 2012

Попробуйте следующим образом:

JFileChooser fS = new JFileChooser();
fS.setAcceptAllFileFilterUsed(false);
fS.setMultiSelectionEnabled(false);
fS.setFileFilter(new FileNameExtensionFilter(wordExtDesc, ".class"));
fS.setFileFilter(new FileNameExtensionFilter(excelExtDesc, ".java"));

Инвертируя порядок набора фильтров, последний добавленный фильтр должен отображаться по умолчанию ...

1 голос
/ 18 июня 2013

Мой путь:

//set default dir to user home
JFileChooser fileChooser = new JFileChooser(System.getProperty("user.home"));
//items in filter dropdown box
FileFilter excelType = new FileNameExtensionFilter("Excel spreadsheet (.xls)", "xls");
FileFilter wordType = new FileNameExtensionFilter("Word document (.doc)", "doc");
fileChooser.addChoosableFileFilter(excelType);
fileChooser.addChoosableFileFilter(wordType);
//default (initial) filter predefined in dropdown box
fileChooser.setFileFilter(excelType);
//initial file name
fileChooser.setSelectedFile(new File("report"));
//clear "All files" from dropdown filter box
fileChooser.setAcceptAllFileFilterUsed(false);
//open filechooser dialog
int response = fileChooser.showSaveDialog(null);
if(response == JFileChooser.APPROVE_OPTION)
{
    //do somethink...
}
1 голос
/ 07 марта 2012

Если вы вызываете это после добавления всех ваших фильтров и setAcceptAllFileFilterUsed, то по умолчанию выбраны Все файлы:

fileChooser.setFileFilter(fileChooser.getChoosableFileFilters()[2]);

Конечно, выберите правильный индекс, чтобы он был выбран по умолчанию

...