Диалоговое окно выбора файла Java

Обновлено: 03.07.2024

Здравствуйте, ребята, если вы работали с приложением на основе Java с графическим интерфейсом, то вы, возможно, знаете, что Swing предоставляет класс javax.swing.JFileChooser, который можно использовать для представления диалогового окна, в котором пользователь может выбрать местоположение и ввести имя файла для сохранения. , используя метод showSaveDialog(). Синтаксис этого метода следующий:


где родителем является родительский компонент диалогового окна, например JFrame .
После того как пользователь ввел имя файла и выбрал OK или Отмена, метод возвращает одно из следующих значений:

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

Кроме того, стоит отметить, что перед вызовом метода showSaveDialog() вы можете установить некоторые параметры диалогового окна. Вы можете использовать метод setDialogTitle(String), чтобы установить пользовательский текст заголовка для диалогового окна, и метод setCurrentDirectory(File), чтобы указать каталог, в котором он будет сохранен.

Кстати, я ожидаю, что вы знакомы с языком программирования Java и базовыми API-интерфейсами Java, такими как пакет java.lang и java.util. Если вы совсем новичок, я предлагаю вам сначала пройти всесторонний курс Java, чтобы построить свои концепции.

Если вам нужна рекомендация, то курс «Полный мастер-класс по Java» Тима Бучалаки на Udemy — это отличный курс для начала. Он также является самым последним и охватывает новые функции Java из последних выпусков Java.

Программа Java для использования JFileChooser в Swing — пример

Вот полная программа на Java, которая демонстрирует, как использовать класс выбора файлов из пакета Swing. Вы можете просто скопировать и вставить код и запустить его в своей любимой среде IDE, такой как Eclipse, NetBeans или IntelliJIDEA. Вам не нужно добавлять какую-либо стороннюю библиотеку, потому что Swing идет вместе с JDK.

Как запустить эту программу Java Swing? Пример

Как я уже сказал, эта программа самодостаточна. Вы можете просто скопировать-вставить и запустить в своей любимой IDE. Просто убедитесь, что имя исходного файла совпадает с именем общедоступного класса. Если вы используете Eclipse, вам даже не нужно этого делать, потому что Eclipse автоматически создаст файл с тем же именем.

Вам также не нужны никакие сторонние библиотеки, поскольку Swing является частью JDK. Когда вы запустите эту программу, она запустит приложение Swing, и вы увидите окно JFrame, как показано ниже


Вы можете увидеть кнопку загрузки, когда вы нажмете на кнопку, откроется собственный вариант выбора файла, который позволит вам выбрать файл и папку, которые вы хотите загрузить, как показано на следующем снимке экрана:


Это все о том, как использовать класс JFileChooser в приложении Java Swing. Это один из наиболее полезных и распространенных компонентов Java Swing API, и вы часто будете использовать его в приложении с графическим интерфейсом Java. Просто познакомьте вас с различными методами API для настройки внешнего вида окна, а также с тем, как получить имя и другие атрибуты выбранного файла для выполнения следующего действия, например сохранения в базе данных или любом другом каталоге.

  • Являются ли компоненты Swing потокобезопасными в Java? (ответ)
  • В чем разница между invokeAndWait() и invokeLater() в Java? (ответ)
  • 10 лучших вопросов для интервью с AWT Swing с ответами (ответ)
  • Как закрыть приложение Swing в Java? (ответ)
  • Как использовать список в Java-приложении Swing (учебник)
  • Что такое метод блокировки в Java? (ответ)
  • 12 книг по Java для опытных разработчиков (книги)
  • Лучшие книги и пробный экзамен для сертификации OCAJP 8 (руководство)
  • Разница между методами repaint() и revalidate() в Swing? (ответ)
  • 10 вопросов на собеседовании по Java Swing для разработчиков GUI (вопросы)

Спасибо, что прочитали эту статью. Если вы найдете этот учебник по Java Swing полезным, поделитесь им со своими друзьями и коллегами. Если у вас есть какие-либо вопросы или отзывы, пожалуйста, напишите об этом. Если вы хотите узнать больше о платформе Swing, вам стоит прочитать Java: The Complete Reference, Ninth Edition.

JFileChooser является частью пакета java Swing. Пакет java Swing является частью JavaTM Foundation Classes (JFC). JFC содержит множество функций, которые помогают в создании графического пользовательского интерфейса в Java. Java Swing предоставляет такие компоненты, как кнопки, панели, диалоговые окна и т. д. JFileChooser — это простой и эффективный способ предложить пользователю выбрать файл или каталог.
В этой статье мы увидим, как использовать JFileChooser в Java Swing.
Конструкторы JFileChooser:

<р>1. JFileChooser() — пустой конструктор, указывающий на каталог пользователя по умолчанию

Вывод фрагмента кода:


<р>2. JFileChooser(String) – использует заданный путь

Вывод фрагмента кода:


<р>3. JFileChooser(File) – использует данный файл как путь

Вывод фрагмента кода:


<р>4. JFileChooser(FileSystemView) – использует данный FileSystemView

Вывод фрагмента кода:


<р>5. JFileChooser(String, FileSystemView) – использует заданный путь и FileSystemView

Вывод фрагмента кода:


<р>6. JFileChooser(File, FileSystemView) – использует заданный текущий каталог и FileSystemView

Вывод фрагмента кода:


Примечание: код, приведенный выше, представляет собой фрагменты кода, а не полный код, фрагменты кода, приведенные выше, следует использовать для вызова конструктора в соответствии с необходимостью и усмотрением программиста, пути, указанные выше, являются произвольными. Пользователь должен установить путь в соответствии со своими потребностями.

Практическое применение JFileChooser

Следующие коды не будут выполняться в онлайн-компиляторе. Используйте автономную среду IDE
1. Создание диалогового окна открытия или сохранения с помощью JFileChooser

JFileChooser позволяет пользователю выбрать файл из файловой системы.

Он предоставляет нестатические методы, в отличие от тех, которые вы видели в JOptionPane, которые создают и отображают компонент выбора файлов в JDialog.

Класс JFileChooser предоставляет нестатические методы для создания и отображения JDialogs.

Вот шаги, которые необходимо выполнить, чтобы отобразить средство выбора файлов в JDialog.

<ПР>
  • Создайте объект класса JFileChooser.
  • Используйте один из трех нестатических методов — showOpenDialog(), showSaveDialog() или showDialog() — для его отображения. в JDialog.
  • Проверьте возвращаемое значение (целое) из вызова метода на предыдущем шаге.
  • Если он возвращает JFileChooser.APPROVE_OPTION, пользователь сделал выбор.

    Двумя другими возможными возвращаемыми значениями являются JFileChooser.CANCEL_OPTION и JFileChooser.ERROR_OPTION, которые указывают, что либо пользователь отменил диалоговое окно, либо произошла какая-то ошибка.

    Чтобы получить выбранный файл, вызовите метод getSelectedFile() или getSelectedFiles(), который возвращает объект File и массив File соответственно.

    Вы можете делать все, что хотите, со ссылкой на файл, возвращенной из него.

    Вы можете повторно использовать объект выбора файла. Он запоминает последнюю посещенную папку.

    По умолчанию JFileChooser начинает отображать файлы из каталога пользователя по умолчанию.

    Вы можете указать исходный каталог в его конструкторе или с помощью метода setCurrentDirectory().

    Создать средство выбора файлов с начальным каталогом по умолчанию

    Создайте средство выбора файлов с начальным каталогом C:/java9.

    Вы можете указать путь к каталогу в соответствии с синтаксисом вашей операционной системы.

    C:\\java9 использует синтаксис пути к файлу Windows.

    Каталог

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

    Вы можете настроить его, чтобы выбрать файл или каталог.

    Также должен быть разрешен множественный выбор.

    Возврат

    Давайте отобразим диалоговое окно выбора открытого файла и проверим, выбрал ли пользователь файл.

    Если пользователь делает выбор, вывести путь к файлу на стандартный вывод.

    Все три метода класса JFileChooser принимают аргумент Component.

    Он используется в качестве владельца для JDialog, который он отображает, и для центрирования диалогового окна.

    Передайте null в качестве родительского компонента, чтобы центрировать его на экране.

    При использовании метода showSaveDialog() класса JFileChooser вы получаете то же самое диалоговое окно, за исключением того, что текст Open для кнопки и заголовок заменяются текстом Save.

    Вы можете настроить заголовок диалогового окна и текст кнопки подтверждения перед его отображением следующим образом:

    Третий метод, showDialog(), позволяет указать текст кнопки утверждения и заголовок диалогового окна, как показано ниже:

    Установка текста кнопки подтверждения не меняет возвращаемое значение метода.

    Вам все равно нужно проверить, вернул ли он JFileChooser.APPROVE_OPTION, чтобы продолжить получение выбранного файла.

    Фильтр

    JFileChooser позволяет установить фильтр файлов.

    Фильтр файлов – это набор критериев, которые применяются перед отображением файла в диалоговом окне.

    Фильтр файлов — это объект класса FileFilter, который находится в пакете javax.swing.filechooser.

    Класс FileFilter является абстрактным классом.

    Чтобы создать файловый фильтр, вам нужно создать класс, наследующий его от класса FileFilter, и переопределить методы accept() и getDescription().

    Метод accept() вызывается со ссылкой на файл, когда средство выбора файла хочет отобразить файл.

    Если метод accept() возвращает значение true, отображается файл.

    В противном случае файл не отображается.

    Следующий код создает и настраивает файловый фильтр для отображения только каталога или файла с расширением doc.

    Фильтрация на основе расширения файла напрямую поддерживается классом *FileNameExtensionFilter*, который наследуется от класса *FileFilter*.

    Его конструктор принимает расширения файла и его описание.

    Второй аргумент имеет переменную длину.

    После создания объекта класса FileNameExtensionFilter необходимо вызвать метод addChoosableFileFilter() средства выбора файлов, чтобы задать фильтр.

    Следующий фрагмент кода добавляет "java" и "jav" в качестве фильтров расширений имен файлов.

    Вы можете добавить несколько фильтров расширений имен файлов в средство выбора файлов.

    Они отображаются в раскрывающемся списке выбора файлов как типы файлов.

    Чтобы разрешить пользователям выбирать только те файлы, которые вы установили в качестве фильтра файлов, вам необходимо удалить один фильтр файлов, который позволяет пользователю выбирать любые файлы, который называется "фильтром принимать все файлы".

    Он отображается как "Все файлы(.)" как тип файла в Windows.

    Вы можете проверить, включен ли фильтр "принять все файлы", с помощью метода isAcceptAllFileFilterUsed(), который возвращает значение true, если средство выбора файлов использует этот фильтр.

    Вы можете получить ссылку на фильтр "принять все файлы" с помощью метода getAcceptAllFileFilter().

    Следующий код устанавливает фильтр "принять все файлы", если он еще не установлен.

    Вы можете получить связанный значок для типа файла, используя метод выбора файла getIcon(файл java.io.File), который возвращает объект Icon.

    Средство выбора файлов также предоставляет механизм прослушивания изменений выбора и других действий, выполняемых пользователем, когда оно отображается в диалоговом окне.

    В этом уроке вы увидите, как отображать диалоговые окна "Открыть файл" в Java. Это делается с помощью элемента управления File Chooser.

    Вернитесь к представлению «Дизайн». В палитре NetBeans найдите элемент File Chooser, который находится в Swing Windows:

    Перетащите средство выбора файлов рядом с формой, но не на нее. Поместите его чуть ниже формы, в белую область. На самом деле он не будет отображаться в форме, но вы можете увидеть его в окне навигатора:

    Имя по умолчанию для средства выбора файлов — jFileChooser1. Щелкните правой кнопкой мыши jFileChooser1 в окне навигатора. В появившемся меню выберите «Изменить имя переменной». Когда появится диалоговое окно, введите db в качестве имени:

    Нажмите «ОК», чтобы подтвердить изменение. Окно Навигатора должно выглядеть так:

    Теперь в проект добавлено средство выбора файлов.

    Отобразить диалоговое окно выбора файлов очень просто. Вернитесь к заглушке кода для пункта меню «Открыть», где у вас было окно сообщения. Теперь введите следующую строку:

    int returnVal = db.showOpenDialog(это);

    Наш инструмент выбора файлов называется db. Мы используем метод ShowOpenDialog класса File Chooser. Между круглыми скобками ShowOpenDialog вы вводите имя окна, которое будет содержать диалоговое окно. Мы ввели this, что означает «эта форма».

    Метод ShowOpenDialog возвращает значение. Это значение является целым числом. Значение сообщает вам, какая кнопка была нажата в диалоговом окне: открыть, отменить и т. д. Мы сохраняем значение в переменной с именем returnVal. Мы скоро воспользуемся этим значением.

    Но запустите вашу программу еще раз. Щелкните Файл > Открыть в форме. Вы должны увидеть диалоговое окно:

    К сожалению, единственное, что делает диалоговое окно «Открыть», — это выбирает файл — на самом деле оно ничего не открывает. Если вы хотите открыть файл, вы должны сами написать код. Мы сделаем это в ближайшее время. Но пока мы можем получить имя и путь к файлу, который выбирает пользователь.

    Во-первых, добавьте в свой код следующий оператор IF сразу под двумя другими строками (возвратным значением и закомментированным окном сообщения):

    if (returnVal = = javax.swing.JFileChooser.APPROVE_OPTION)

    Итак, мы используем класс Swing под названием JFileChooser. С помощью этого класса вы можете проверить, какая кнопка была нажата. Когда вы вводите точку после JFileChooser, вы должны увидеть всплывающий список:

    APPROVE_OPTION означает кнопки OK и Да. Итак, мы тестируем переменную returnVal, чтобы убедиться, что она соответствует APPROVE_OPTION (пользователь нажал OK?).

    Для доступа к файлу, выбранному пользователем, существует метод getSelectedFile. Однако это возвращает объект File, а не строку. Объект File является частью класса IO в Java. Поэтому добавьте следующую строку в оператор IF:

    файл java.io.File = db.getSelectedFile();

    Таким образом, файл, выбранный пользователем, окажется в объекте File, который мы назвали файлом.

    Чтобы сделать с ним что-то полезное (например, открыть файл), нам нужно преобразовать его в строку:

    Строка имя_файла = file.toString();

    В этой строке просто используется метод toString объектов File. Мы помещаем результат в новую переменную с именем имя_файла. Добавьте строку в оператор IF.

    Чтобы отобразить имя файла, удалите комментарии из окна сообщения и переместите его в качестве последней строки вашего оператора IF. Измените последний параметр в круглых скобках на file_name:

    javax.swing.JOptionPane.showMessageDialog(FormObjects.this, имя_файла);

    Поскольку эта строка очень длинная, вы можете добавить оператор импорта вверху вашего кода, под тем, который у вас уже есть:

    импортировать javax.swing.JOptionPane;

    Тогда строка окна сообщения может быть просто такой:

    JOptionPane.showMessageDialog( FormObjects.this, имя_файла);

    Теперь читать стало немного легче!

    Но теперь ваш код должен выглядеть так:

    Запустите свою программу и протестируйте ее. Щелкните Файл > Открыть, чтобы открыть диалоговое окно. Выберите любой файл на вашем компьютере и нажмите «Открыть». В окне сообщения должно отображаться:

    Прежде чем мы добавим код для открытия выбранного файла, вы, возможно, заметили, что для параметра "Тип файлов" в диалоговом окне "Открыть файл" установлено значение "Все файлы". Вы можете отфильтровать файлы в этом списке, чтобы пользователь мог открывать только, скажем, текстовые файлы или только изображения с определенными расширениями (jpeg, gif, png).

    Чтобы отфильтровать список «Тип файлов», в диалоговом окне есть метод addChoosableFileFilter. Но вам нужен объект Filter, заключенный в круглые скобки.

    Чтобы ваш код не стал излишне длинным, добавьте следующие два оператора импорта в начало кода, чуть ниже остальных:

    импорт javax.swing.filechooser.FileFilter;
    импорт javax.swing.filechooser.FileNameExtensionFilter;

    Чтобы настроить фильтр расширения имени файла, необходимо создать новый объект FileFilter. Добавьте следующую строку непосредственно перед первой строкой вашего кода (перед строкой int returnVal):

    FileFilter ft = new FileNameExtensionFilter("Текстовые файлы", "txt");

    В круглых скобках FileNameExtensionFilter вам сначала нужен текст, который появится в списке Files of Type. После запятой вы вводите имя файлов, которые вы хотите отобразить. Здесь необходимо правильное расширение файла, но без точки. Обратите внимание на двойные кавычки выше.

    Вы можете добавить более одного расширения. Просто введите запятую, а затем файлы, которые вы хотите отобразить:

    FileNameExtensionFilter("Текстовые файлы", "txt", "html");

    После того как вы настроили объект фильтра, вы можете использовать метод addChoosableFileFilter вашего диалогового окна:

    Добавьте в свой код строку сразу после строки FileFilter:

    Запустите программу еще раз и посмотрите на свое диалоговое окно. Нажмите на стрелку в раскрывающемся списке:

    Выберите параметр «Текстовые файлы». В этом случае в диалоговом окне будут отображаться только файлы с расширением .txt.

    Если вам нужна еще одна строка в списке (например, для отображения html-файлов), вы можете настроить другой объект FileFilter:

    При запуске программы список типов файлов будет выглядеть следующим образом:

    Теперь мы можем написать код для фактического открытия файла. Мы сделаем это в следующей части.

    Читайте также: