Добавление выбора файлов к приложению Java

Составитель: Петр Дворжак (декабрь 2009 г.), редактор: Алёна Сташкова

В этом учебном курсе вы узнаете, как добавлять выбор файлов к приложению Java с помощью компонента javax.swing.JFileChooser. Код можно написать вручную, но использование редактора GUI Builder среды NetBeans существенно снижает объём работы. В рамках этого упражнения вы создадите небольшое приложение Java, загружающее файл .txt в текстовую область.

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

Содержание

Содержимое этой страницы применимо к IDE NetBeans 7.0 и более поздним версиям

Для работы с этим учебным курсом требуются программное обеспечение и ресурсы, перечисленные ниже.

Программное обеспечение или материал Требуемая версия
IDE NetBeans Версия 7.0 или более поздняя
Комплект для разработки приложений на языке Java (JDK) Версия 6, 7 или 8

Создание приложения

Прежде всего необходимо создать приложение Java:

  1. Выберите в главном меню "Файл > Новый проект". Выберите категорию "Java" и тип проекта "Приложение Java". Нажмите кнопку "Далее".
  2. В качестве имени проекта введите JFileChooserDemo, затем укажите местоположение проекта.
  3. Снимите флажок "Создать главный класс".

    Мастер создания проектов

  4. Нажмите кнопку "Завершить".

Создание формы приложения

В этом разделе вы создадите контейнер JFrame и добавите к нему несколько компонентов.

Создание формы JFrame:

  1. Щелкните правой кнопкой мыши узел "Исходные файлы" и выберите пункт "Создать > Другое". Выберите категорию "Формы Swing GUI" и тип файла "JFrameForm". Нажмите кнопку "Далее".
  2. В поле "Имя класса" введите JFileChooserDemo.
  3. В поле "Пакет" введите jfilechooserdemo.resources.

    Создается новый контейнер JFrame

  4. Нажмите кнопку "Завершить".
  5. В окне "Свойства" введите Demo application в качестве свойства "Заголовок" и нажмите ENTER для подтверждения.

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

  1. В окне "Палитра" откройте категорию "Меню Swing", выберите компонент "Строка меню" и перетащите его в левый верхний угол JFrame.

    Примечание. Если палитра не отображается, выберите 'Окно > Палитра' в главном меню.

    Строка меню добавлена в форму JFrame

  2. Правой кнопкой мыши щелкните элемент "Правка" компонента "Строка меню" и выберите в контекстном меню пункт "Удалить".
  3. Чтобы добавить пункт меню, позволяющий открывать компонент FileChooser из выполняемого приложения, в категории "Меню Swing" в окне "Палитра" выберите новый пункт меню (JMenuItem1), перетащите его в элемент "Строка меню" и поместите его в поле "Файл" элемента "Строка меню".

    Пункт меню добавлен в строку меню

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

  4. Правой кнопкой мыши щелкните элемент jMenuItem1 в режиме конструирования и выберите 'Изменить имя переменной' в контекстном меню. Измените имя элемента на Open и нажмите кнопку "ОК".
  5. Убедитесь, что элемент jMenuItem1 все еще выбран в режиме проектирования. Нажмите клавишу ПРОБЕЛ, чтобы изменить текст компонента. Измените текст на Open и нажмите ENTER для подтверждения.
  6. Укажите обработчик действий для пункта меню "Open". Правой кнопкой мыши щелкните пункт меню и выберите в контекстном меню "События >Действие > Выполненное действие". GUI Builder автоматически переключается в режим просмотра исходного кода, и создается новый метод обработчика событий с именем OpenActionPerformed(). Окно навигатора должно выглядеть следующим образом:

    Пункт меню добавлен в строку меню

  7. Чтобы добавить пункт меню для выхода элемента FileChooser из создаваемого приложения, вернитесь в режим проектирования, в категории "Меню Swing" в окне "Палитра" выберите пункт меню JMenuItem1 и перетащите его в элемент "Строка меню" под пункт меню "Open". Место вставки элемента JMenuItem1 выделено оранжевым цветом.

    Выделение

  8. Щелкните правой кнопкой мыши элемент jMenuItem1 в режиме конструирования и выберите 'Изменить имя переменной' в контекстном меню. Измените имя элемента на Exit и нажмите кнопку "ОК".
  9. Убедитесь, что элемент jMenuItem1 все еще выбран в режиме конструирования. Нажмите клавишу ПРОБЕЛ, чтобы изменить текст компонента. Измените текст на Exit и нажмите ENTER для подтверждения.
  10. Укажите обработчик действий для пункта меню "Exit". Правой кнопкой мыши щелкните пункт меню и выберите в контекстном меню "События >Действие > Выполненное действие". GUI Builder автоматически переключается в режим просмотра исходного кода, и создается новый метод обработчика событий с именем ExitActionPerformed(). В окне навигатора, под узлом OpenActionPerformed() отображается узел ExitActionPerformed.
  11. Чтобы сделать пункт меню "Exit" рабочим, в тело метода ExitActionPerformed() необходимо включить следующий исходный код:
    			 System.exit(0); 
  12. Переключитесь обратно в режим проектирования. Перетащите текстовую область (JTextArea) из категории 'Элементы управления Swing' палитры на форму, как показано на иллюстрации.

    Текстовая область добавлена в форму JForm

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

    Приложение Java - конструктор графического интерфейса пользователя

Основным упражнением данного учебного курса была настройка простого приложения Java. Сейчас следует добавить фактический выбор файлов.

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

  1. Выберите Окно > Навигация > Навигатор, чтобы открыть окно 'Навигатор'(если оно еще не открыто).
  2. В навигаторе щелкните правой кнопкой мыши узел Другие компоненты. Выберите в контекстном меню пункт "Добавить из палитры > Диалоговые окна Swing > Выбор файлов

    Помимо использования контекстного меню Добавить из палитры можно также перетащить компонент JFileChooser из категории 'Окно Swing' палитры на белое поле конструктора графического интерфейса. Вы получите тот же результат, но данный метод требует немного больше усилий, так как эскиз JFileChooser занимает достаточно большую область экрана и можно случайно вставить окно в одну из панелей, что не соответствует поставленной задаче.

  3. Навигатор показывает, что элемент JFileChooser добавлен в форму.
  4. Щелкните узел JFileChooser правой кнопкой мыши и измените имя переменной на fileChooser.

    Добавлено средство выбора файлов - представление навигатора

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

Настройка выбора файлов

Реализация действия "Открыть"

  1. Выберите элемент JFileChooser в окне 'Навигатор', затем измените его свойства в диалоговом окне 'Свойства' Измените свойство dialogTitle на Мой открытый диалог, затем нажмите Enter и закройте диалоговое окно 'Свойства'
  2. Нажмите кнопку "Перейти к исходному тексту" в GUI Builder, чтобы вернуться к режиму просмотра исходного кода. Чтобы интегрировать выбор файлов в приложение, необходимо вставить в существующий метод OpenActionPerformed() следующий фрагмент кода.
    private void OpenActionPerformed(java.awt.event.ActionEvent evt) {
        int returnVal = fileChooser.showOpenDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();
            try {
              // What to do with the file, e.g. display it in a TextArea
              textarea.read( new FileReader( file.getAbsolutePath() ), null );
            } catch (IOException ex) {
              System.out.println("problem accessing file"+file.getAbsolutePath());
            }
        } else {
            System.out.println("File access cancelled by user.");
        }
    } 

    Примечание. Удалите первую и последнюю строку фрагмента кода, которые дублируют существующие строки в исходном файле.

  3. Если редактор создает отчет об ошибках в коде, щелкните правой кнопкой мыши в любом месте кода и выберите 'Исправить выражения импорта' или нажмите Ctrl+Shift+I. В диалоговом окне 'Исправить все выражения импорта' примите значения по умолчанию для обновления операторов импорта и нажмите OK.

Итак, метод FileChooser getSelectedFile() вызывается для определения файла, выбранного пользователем, в целях дальнейшей работы с ним. В этом примере считывается содержимое файлов, которое затем отображается в TextArea.

Реализация фильтра файлов

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

  1. Переключитесь в режим конструирования и выберите элемент fileChooser в окне 'Навигатор'.
  2. В окне 'Свойства' нажмите кнопку обзора ('...') рядом со свойством fileFilter.
  3. В диалоговом окне "Фильтр файлов" выберите пользовательский код из поля со списком.

    Открытый список

  4. Введите new MyCustomFilter() в текстовое поле. Нажмите кнопку "ОК".
  5. Для использования пользовательского кода необходимо создать внутренний (или внешний) класс MyCustomFilter, расширяющий класс FileFilter. Чтобы создать внутренний класс, реализующий фильтр, скопируйте и вставьте следующий фрагмент кода в исходный код класса под операторами импорта.
        class MyCustomFilter extends javax.swing.filechooser.FileFilter {
            @Override
            public boolean accept(File file) {
                // Allow only directories, or files with ".txt" extension
                return file.isDirectory() || file.getAbsolutePath().endsWith(".txt");
            }
            @Override
            public String getDescription() {
                // This description will be displayed in the dialog,
                // hard-coded = ugly, should be done via I18N
                return "Text documents (*.txt)";
            }
        } 

Примечание. Описание реализации более интеллектуальных, поддерживающих переключение фильтров файлов просмотрите метод addChoosableFileFilter.

Выполнение приложения

  1. Для запуска примера проекта щелкните проект JFileChooserDemo правой кнопкой мыши и нажмите кнопку "Выполнить".
  2. В диалоговом окне "Запуск проекта" выберите главный класс jfilechooserdemo.resources.JFileChooserDemo и нажмите кнопку "ОК".

    Выполнить

  3. В меню 'Файл' запущенного демо-приложения выберите 'Открыть', чтобы инициировать действие. Результат должен иметь следующий вид:

    Демо-версия JFileChooser - результат

  4. Чтобы закрыть приложение, выберите "Выход" в меню "Файл".

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


Что дальше?

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo