Справочник по C#

    Исходники по языку программирования CSharp

    Java Swing – пример JFileChooser

    /
    /
    /
    249 Views

    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());
    }
    }
    
    }
    
    }
    

    Выход:

    
    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

    moyadcode13
    • Facebook
    • Twitter
    • Google+
    • Linkedin
    • Pinterest
    moyadcode10
    moyadcode11
    moyadcode9