Содержание
JFileChooser это быстрый и простой способ предложить пользователю выбрать файл или место сохранения файла. Ниже приведены несколько простых примеров использования этого класса.
JFileChooser имеет 6 конструкторов:
JFileChooser()— пустой конструктор, который указывает на каталог пользователя по умолчаниюJFileChooser(String)— использует заданный путьJFileChooser(File)— использует данный файл в качестве путиJFileChooser(FileSystemView)— использует данный FileSystemViewJFileChooser(String, FileSystemView)— использует заданный путь иFileSystemViewJFileChooser(File, FileSystemView)— использует данный текущий каталог иFileSystemView
Все разные способы вызова JFileChooser конструктор
// JFileChooser jfc;
// String path = "C: Users Public";
// File file = new File ("C: Users Public");
// FileSystemView fsv = FileSystemView.getFileSystemView ();
// jfc = new JFileChooser ();
// jfc = new JFileChooser (path);
// jfc = new JFileChooser (file);
// jfc = new JFileChooser (fsv);
// jfc = new JFileChooser (path, fsv);
// jfc = new JFileChooser (file, fsv);
Личное предпочтение автора должно принимать во внимание FileSystemView , В приведенных ниже примерах мы используем FileSystemView.getFileSystemView() и указать его в домашний каталог через getHomeDirectory() , Этот процесс приводит к типу файла. Другими словами, мы используем конструктор JFileChooser(File) принимая во внимание FileSystemView ,
1. show * Dialog () — Открыть или сохранить файл
Пример использования JFileChooser чтобы получить абсолютный путь к файлу, который пользователь хочет открыть, или получить местоположение, где пользователь хочет сохранить файл:
FileChooser1.java
package com.csharpcoderr.jfileChooser;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileSystemView;
public class FileChooser1 {
public static void main(String[] args) {
JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
int returnValue = jfc.showOpenDialog(null);
// int returnValue = jfc.showSaveDialog (null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = jfc.getSelectedFile();
System.out.println(selectedFile.getAbsolutePath());
}
}
}
Обратите внимание, что два метода showOpenDialog() а также showSaveDialog() похожи, что делает разницу в том, как разработчик обрабатывает каждый из них. Для удобства чтения я бы не советовал смешивать два метода.
Выход:

Когда пользователь переходит в каталог, выбирает файл и нажимает «Открыть».

Выход:
C:UsersPublicPicturespollock.she-wolf.jpg
2. setFileSelectionMode (int) — Выбрать файлы или каталоги
С помощью этого метода мы можем ограничить выбор пользователем только каталогов ( JFileChooser.DIRECTORIES_ONLY ) или только файлы ( JFileChooser.FILES_ONLY ) или файлы и каталоги ( JFileChooser.FILES_AND_DIRECTORIES ). По умолчанию FILES_ONLY , Вот пример, который реализует JFileChooser.DIRECTORIES_ONLY :
FileChooser2.java
package com.csharpcoderr.jfileChooser;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileSystemView;
public class FileChooser2 {
public static void main(String[] args) {
JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
jfc.setDialogTitle("Choose a directory to save your file: ");
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnValue = jfc.showSaveDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
if (jfc.getSelectedFile().isDirectory()) {
System.out.println("You selected the directory: " + jfc.getSelectedFile());
}
}
}
}
Выход:

You selected the directory: C:UsersPublicPictures
3. setMultiSelectionEnabled (Boolean) — разрешить множественный выбор
Пример, в котором включен множественный выбор. Пользователь выбирает несколько файлов, а программа печатает имена:
FileChooser3.java
package com.csharpcoderr.jfileChooser;
import java.io.File;
import java.util.Arrays;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileSystemView;
public class FileChooser3 {
public static void main(String[] args) {
JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
jfc.setDialogTitle("Multiple file and directory selection:");
jfc.setMultiSelectionEnabled(true);
jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int returnValue = jfc.showOpenDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
File[] files = jfc.getSelectedFiles();
System.out.println("Directories foundn");
Arrays.asList(files).forEach(x -> {
if (x.isDirectory()) {
System.out.println(x.getName());
}
});
System.out.println("n- - - - - - - - - - -n");
System.out.println("Files Foundn");
Arrays.asList(files).forEach(x -> {
if (x.isFile()) {
System.out.println(x.getName());
}
});
}
}
}
Выход:

Directories found
Camera Roll
Saved Pictures
- - - - - - - - - - -
Files Found
autumn_rhythm-pollock1.jpg
kuNUfO.jpg
mona.jpg
4. Фильтры — ограничивают набор файлов, отображаемых пользователю
Всегда удобно ограничить выбор пользователя потребностями программы. Если, например, вашей программе требуются изображения в формате png и gif, рекомендуется ограничить выбор пользователя только этим. Пример ниже показывает, как этого добиться, используя FileNameExtensionFilter :
FileChooser4.java
package com.csharpcoderr.jfileChooser;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.filechooser.FileSystemView;
public class FileChooser4 {
public static void main(String[] args) {
JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
jfc.setDialogTitle("Select an image");
jfc.setAcceptAllFileFilterUsed(false);
FileNameExtensionFilter filter = new FileNameExtensionFilter("PNG and GIF images", "png", "gif");
jfc.addChoosableFileFilter(filter);
int returnValue = jfc.showOpenDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
System.out.println(jfc.getSelectedFile().getPath());
}
}
}
Выход:

Как видите, пользователю запрещено выбирать что-либо еще. Указанный выше каталог также содержит другие типы изображений, но пользователю показываются только gif и png.
Каталог выглядит так:

5. Использование showDialog ()
Если вам нужно настроить кнопку подтверждения, используйте showDialog() метод. Вот пример того, как его использовать:
FileChooser5.java
package com.csharpcoderr.inputDialog;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileSystemView;
public class FileChooser5 {
public static void main(String[] args) {
JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
jfc.setDialogTitle("Custom button");
int returnValue = jfc.showDialog(null, "A button!");
if (returnValue == JFileChooser.APPROVE_OPTION) {
System.out.println(jfc.getSelectedFile().getPath());
}
}
}
Выход:
Заметка
Есть метод в JFileChooser называется setApproveButtonText(String) , Проблема этого метода в том, что он работает только для showOpenDialog() , Рекомендуется использовать showDialog() в качестве замены showSaveDialog() когда пользовательская кнопка необходима.
Вы также должны проверить самые простые и наиболее часто используемые методы для записи и чтения файлов:
Рекомендации
0.00 (0%) 0 votes








