// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Добавление выбора файлов к приложению Java
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Добавление выбора файлов к приложению Java - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Добавление выбора файлов к приложению Java

_Составитель: Петр Дворжак link:http://blogs.oracle.com/joshis/entry/a_quick_jfilechooser_demo[+(декабрь 2009 г.)+], редактор: Алёна Сташкова_

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

Полученный проект link:https://netbeans.org/projects/samples/downloads/download/Samples%252FJava%252FJFileChooserDemo.zip[+ можно загрузить с использованием средства выбора файлов+]. 


image::images/netbeans-stamp-80-74-73.png[title="Содержимое этой страницы применимо к IDE NetBeans 7.0 и более поздним версиям"]


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

|===
|Программное обеспечение или материал |Требуемая версия 

|link:http://netbeans.org/downloads/[+IDE NetBeans+] |Версия 7.0 или более поздняя 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Комплект для разработки приложений на языке Java+] (JDK) |Версия 6, 7 или 8 
|===


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

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

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

[.feature]
--
image::images/newproj-small.png[role="left", link="images/newproj.png"]
--

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


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

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

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

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

[.feature]
--
image::images/newjframeform-small.png[role="left", link="images/newjframeform.png"]
--

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

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

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

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

[.feature]
--
image::images/menubaradded-small.png[role="left", link="images/menubaradded.png"]
--

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

[.feature]
--
image::images/menuitemadded-small.png[role="left", link="images/menuitemadded.png"]
--

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

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

image::images/openactionperformednavigator.png[]

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

[.feature]
--
image::images/highlighting-small.png[role="left", link="images/highlighting.png"]
--

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

[source,java]
----

			 System.exit(0); 
----
12. Переключитесь обратно в режим проектирования. Перетащите текстовую область ( ``JTextArea`` ) из категории 'Элементы управления Swing' палитры на форму, как показано на иллюстрации.

[.feature]
--
image::images/textareadded-small.png[role="left", link="images/textareadded.png"]
--

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

[.feature]
--
image::images/jfilechooserdemoview_final-small.png[role="left", link="images/jfilechooserdemoview_final.png"]
--

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


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

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

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

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

image::images/navigator_jframe.png[]

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


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


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

1. Выберите элемент  ``JFileChooser``  в окне 'Навигатор', затем измените его свойства в диалоговом окне 'Свойства' Измените свойство  ``dialogTitle``  на `Мой открытый диалог`, затем нажмите Enter и закройте диалоговое окно 'Свойства'
2. Нажмите кнопку "Перейти к исходному тексту" в GUI Builder, чтобы вернуться к режиму просмотра исходного кода. Чтобы интегрировать выбор файлов в приложение, необходимо вставить в существующий метод `OpenActionPerformed()` следующий фрагмент кода.

[source,java]
----

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. В диалоговом окне "Фильтр файлов" выберите пользовательский код из поля со списком.

[.feature]
--
image::images/combobox-small.png[role="left", link="images/combobox.png"]
--

4. Введите  ``new MyCustomFilter()``  в текстовое поле. Нажмите кнопку "ОК".
5. Для использования пользовательского кода необходимо создать внутренний (или внешний) класс  ``MyCustomFilter`` , расширяющий класс  ``FileFilter`` . Чтобы создать внутренний класс, реализующий фильтр, скопируйте и вставьте следующий фрагмент кода в исходный код класса под операторами импорта.

[source,java]
----

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

*Примечание.* Описание реализации более интеллектуальных, поддерживающих переключение фильтров файлов просмотрите метод link:http://java.sun.com/javase/7/docs/api/javax/swing/JFileChooser.html#addChoosableFileFilter%28javax.swing.filechooser.FileFilter%29[+addChoosableFileFilter+].


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

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

image::images/run.png[]

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

[.feature]
--
image::images/result_jfilechooserdemo-small.png[role="left", link="images/result_jfilechooserdemo.png"]
--

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

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

link:/about/contact_form.html?to=3&subject=Feedback:%20Adding%20a%20FileChooser[+Отправить отзыв по этому учебному курсу+]



== Что дальше?

* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG920[+Реализация графических интерфейсов Java+] в документе _Разработка приложений в IDE NetBeans_
* link:gui-binding.html[+Привязка компонентов Bean и данных в приложениях Java с помощью IDE NetBeans+]
* link:gui-automatic-i18n.html[+Интерналионализация формы графического интерфейса с помощью IDE NetBeans+]
* link:http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html[+Учебный курс по Java: использование средств выбора файлов+]
