corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

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

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

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

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

Содержание

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

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

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

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

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

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

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

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

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

  1. Щелкните правой кнопкой мыши узел "Исходные файлы" и выберите пункт "Создать > Другое". Выберите категорию "Формы Swing GUI" и тип файла "JFrameForm". Нажмите кнопку "Next" (Далее).
  2. В поле "Имя класса" введите JFileChooserDemo.
  3. В поле "Пакет" введите jfilechooserdemo.resources.
  4. Снимок создаваемого контейнера JFrame
  5. Нажмите кнопку "Готово".
  6. В окне "Свойства" введите Demo application в качестве свойства "Заголовок" и нажмите клавишу ВВОД для подтверждения.

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

  1. В окне "Палитра" откройте категорию "Меню Swing", выберите компонент "Строка меню" и перетащите его в левый верхний угол JFrame.
  2. Примечание. Если окно палитры не отображается, выберите в главном меню пункты "Окно > Палитра" либо нажмите сочетание клавиш CTRL+SHIFT+8.

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

    Снимок добавления пункта меню в элемент "Строка меню"
  6. Правой кнопкой мыши щелкните элемент jMenuItem1 в режиме проектирования и выберите в контекстном меню пункт "Изменить имя переменной". Измените имя элемента на Open и нажмите кнопку "ОК".
  7. Убедитесь, что элемент jMenuItem1все еще выбран в режиме проектирования. Нажмите клавишу ПРОБЕЛ, чтобы изменить текст компонента. Измените текст на Open и нажмите клавишу ВВОД для подтверждения.
  8. Укажите обработчик действий для пункта меню "Open". Правой кнопкой мыши щелкните пункт меню и выберите в контекстном меню "События >Действие > Выполненное действие". GUI Builder автоматически переключается в режим просмотра исходного кода, и создается новый метод обработчика событий с именем OpenActionPerformed(). Окно навигатора должно выглядеть следующим образом:
    Снимок добавления пункта меню в элемент "Строка меню"
  9. Чтобы добавить пункт меню для выхода элемента FileChooser из создаваемого приложения, вернитесь в режим проектирования, в категории "Меню Swing" в окне "Палитра" выберите пункт меню JMenuItem1 и перетащите его в элемент "Строка меню" под пункт меню "Open". Место вставки элемента JMenuItem1 обозначено оранжевым цветом.
    Снимок выделения
  10. Правой кнопкой мыши щелкните элемент jMenuItem1 в режиме проектирования и выберите в контекстном меню пункт "Изменить имя переменной". Измените имя элемента на Exit и нажмите кнопку "ОК".
  11. Убедитесь, что элемент jMenuItem1 все еще выбран в режиме проектирования. Нажмите клавишу ПРОБЕЛ, чтобы изменить текст компонента. Измените текст на Exit и нажмите клавишу ВВОД для подтверждения.
  12. Укажите обработчик действий для пункта меню "Exit". Правой кнопкой мыши щелкните пункт меню и выберите в контекстном меню "События >Действие > Выполненное действие". GUI Builder автоматически переключается в режим просмотра исходного кода, и создается новый метод обработчика событий с именем ExitActionPerformed(). В окне навигатора, под узлом OpenActionPerformed() отображается узел ExitActionPerformed.
  13. Чтобы сделать пункт меню "Exit" рабочим, в тело метода ExitActionPerformed() необходимо включить следующий исходный код:
    			 System.exit(0); 
  14. Переключитесь обратно в режим проектирования. Перетащите текстовую область (JTextArea) из категории "Элементы управления Swing" окна "Палитра" в форму, как показано на следующей иллюстрации.
    Снимок добавления текстовой области в форму JForm
  15. Измените размер компонента, чтобы оставить место для текста, который отобразится в выборе файлов позже. Измените имя переменной на textarea. Форма должна иметь следующий вид:
  16. Приложение Java – GUI Builder

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

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

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

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

  3. Окно "Инспектор" отображает добавление JFileChooser в форму.
  4. Правой кнопкой мыши щелкните узел JFileChooser и измените имя переменной на fileChooser.

  5. Добавление выбора файлов – режим инспектора

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

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

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

  1. Выберите JFileChooser в окне "Инспектор", а затем измените его свойства в диалоговом окне "Свойства". Измените свойство dialogTitle на Это мое диалоговое окно открытия, затем нажмите клавишу ВВОД и закройте диалоговое окно "Свойства".
  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. Примечание. Удалите первую и последнюю строки фрагмента кода, дублирующие существующие строки исходного файла.

  4. Если в редакторе отобразится сообщение об ошибке кода, щелкните правой кнопкой мыши любой фрагмент кода и выберите пункт меню "Исправить выражения импорта" либо нажмите сочетание клавиш CTRL+SHIFT+I. В диалоговом окне "Исправить все выражения импорта" оставьте значения по умолчанию для обновления выражений импорта и нажмите кнопку "ОК".

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

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

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

  1. Переключитесь в режим проектирования и выберите элемент FileChooser в окне "Инспектор".
  2. В окне "Свойства" нажмите кнопку с многоточием ("..."), расположенную рядом со свойством "Фильтр файлов".
  3. В диалоговом окне "Фильтр файлов" выберите пользовательский код из поля со списком.
    Снимок открытого поля со списком
  4. Введите new MyCustomFilter() в текстовое поле. Нажмите кнопку "ОК".
  5. Для использования пользовательского кода необходимо создать внутренний (или внешний) класс MyCustomFilter, расширяющий класс FileFilter. Чтобы создать внутренний класс, реализующий фильтр, скопируйте и вставьте следующий фрагмент кода в исходный код класса под операторами импорта.
        class MyCustomFilter extends javax.swing.filechooser.FileFilter {
            @Override
            public boolean accept(File file) {
                // Разрешить только каталоги или файлы с расширением TXT
                return file.isDirectory() || file.getAbsolutePath().endsWith(".txt");
            }
            @Override
            public String getDescription() {
                // Это описание будет отображаться в диалоговом окне,
                // жестко запрограмированно = некрасиво, следует использовать интернационализацию
                return "Text documents (*.txt)";
            }
        } 

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

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

  1. Для запуска примера проекта щелкните проект JFileChooserDemo правой кнопкой мыши и нажмите кнопку "Выполнить".
  2. В диалоговом окне "Запуск проекта" выберите главный класс jfilechooserdemo.resources.JFileChooserDemo и нажмите кнопку "ОК".
  3. Чтобы запустить действие, выберите пункт "Открыть" в меню "Файл" в выполняемом демонстрационном приложении.
    Результат должен иметь следующий вид:
    Демонстрация JFileChooser – результат
  4. Чтобы закрыть приложение, выберите "Выход" в меню "Файл".

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


Что дальше?