Домой java Java Swing — пример JFileChooser

Java Swing — пример JFileChooser

1797
0

JFileChooser это быстрый и простой способ предложить пользователю выбрать файл или место сохранения файла. Ниже приведены несколько простых примеров использования этого класса.

JFileChooser имеет 6 конструкторов:

  • JFileChooser() — пустой конструктор, который указывает на каталог пользователя по умолчанию
  • JFileChooser(String) — использует заданный путь
  • JFileChooser(File) — использует данный файл в качестве пути
  • JFileChooser(FileSystemView) — использует данный FileSystemView
  • JFileChooser(String, FileSystemView) — использует заданный путь и FileSystemView
  • JFileChooser(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());
}
}

}

}

Выход:

ЧИТАТЬ ТАКЖЕ:  Intellij IDEA - статический void основной ярлык по умолчанию


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() когда пользовательская кнопка необходима.

Вы также должны проверить самые простые и наиболее часто используемые методы для записи и чтения файлов:

Рекомендации

  1. JFileChooser — API Java 8
  2. FileSystemView — API Java 8
  3. FileNameExtension — API Java 8

JFileChooser swing

Java Swing — пример JFileChooser

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь