В качестве примера будет создано приложение типа CRUD (Create, Read, Update, Delete – создание, чтение, обновление, удаление) для работы с базой данных при помощи пользовательского элемента, предназначенного для отображения данных (предварительный просмотр проекта автомобиля).
Это руководство в значительной степени основано на экранной демонстрации выполнения описываемых действий в версии разработки. Со времени создания этой демонстрации часть интерфейса пользователя изменилась, поэтому могут быть заметны некоторые различия между настоящим руководством и демонстрационным примером. Можно просмотреть демонстрацию (приблизительно 9 минут) сейчас или загрузить ее в виде файла ZIP.
Перед созданием настольного приложения типа CRUD (Create, Read, Update, Delete – создание, чтение, обновление, удаление) в среде IDE необходимо настроить подключение к базе данных, которую будет использовать это приложение. Предварительная настройка этого подключения позволит использовать функции среды IDE для автоматизации привязки базы данных к приложению.
В этом руководстве приведены указания по работе с базой данных Java DB, поскольку в среде IDE имеется удобный интерфейс для запуска и останова сервера базы данных Java. Однако без особых затруднений можно использовать и другой сервер базы данных.
Сначала необходимо убедиться в том, что база данных Java зарегистрирована в среде IDE. В ряде случаев регистрация базы данных Java в среде IDE выполняется автоматически, например, при регистрации сервера приложений системы Sun Java или при работе с JDK 6. Если база данных Java не зарегистрирована в среде IDE, необходимо выполнить ее регистрацию вручную.
Для проверки регистрации базы данных Java в среде IDE NetBeans 6.1:
- Откройте окно "Services".
- Щелкните правой кнопкой мыши узел "Databases > Java DB" и выберите "Properties".
Если база данных Java зарегистрирована, поля "Java DB Installation" и "Database Location" будут заполнены.
Если база данных Java не зарегистрирована, заполните следующие два поля:
- Java DB Installation. Введите путь к серверу базы данных.
- Database Location. Укажите папку, в которой будут храниться базы данных.
- Нажмите кнопку "OK".
Для проверки регистрации базы данных Java в среде IDE NetBeans 6.0:
- Выберите "Tools > Java DB Database > Settings".
Если база данных Java зарегистрирована, поля "Java DB Installation" и "Database Location" будут заполнены.
Если база данных Java не зарегистрирована, заполните следующие два поля:
- Java DB Installation. Введите путь к серверу базы данных.
- Database Location. Укажите папку, в которой будут храниться базы данных.
- Нажмите кнопку "OK".
После регистрации базы данных Java в среде IDE можно легко запускать и останавливать сервер базы данных, а также создавать новые базы данных.
Для запуска сервера базы данных в среде IDE NetBeans 6.1:
- В окне "Services" с помощью правой кнопки мыши выберите "Databases > Java DB", а затем выберите "Start Server".
Если местоположение для базы данных еще не определено, появится диалоговое окно "Set Database Location". Введите местоположение сервера БД, на котором будут храниться базы данных. При необходимости можно создать новую папку.
Для запуска сервера базы данных в среде IDE NetBeans 6.0:
- Выберите "Tools > Java DB Database > Start Server".
Если местоположение для базы данных еще не определено, появится диалоговое окно "Set Database Location". Введите местоположение сервера БД, на котором будут храниться базы данных. При необходимости можно создать новую папку.
После запуска сервера в окне "Output" откроется вкладка "Java DB Database Process", и появится следующее сообщение:
Apache Derby Network Server - 10.2.2.0 - (485682) started and ready
to accept connections on port 1527 at 2007-09-05 10:26:25.424 GMT
Для создания базы данных в среде IDE NetBeans 6.1:
- В окне "Services" с помощью правой кнопки мыши выберите "Databases > Java DB", а затем выберите "Create Database".
- В текстовом поле "Database Name" введите car_database. Введите "nbuser" в полях "User Name" и "Password".
- Нажмите кнопку "OK".
Для создания базы данных в среде IDE NetBeans 6.0:
- Выберите "Tools > Java DB Database > Create Database". Появится диалоговое окно "Create Java DB Database".
- В текстовом поле "Database Name" введите car_database. Введите "nbuser" в полях "User Name" и "Password".
- Нажмите кнопку "OK".
К настоящему моменту запущен сервер базы данных и создана новая база данных. Однако до начала работы с базой данных в среде IDE необходимо подключиться к этой базе данных. Для подключения к базе данных car_database:
- Перейдите в окно "Services" (Ctrl+5) и разверните узел "Databases", в котором должна отображаться новая база данных.
- Щелкните правой кнопкой мыши узел подключения к базе данных (jdbc:derby://localhost:1527/car_database[nbuser on NBUSER]) и выберите "Connect".
Значок узла подключения должен после этого стать целым (
), что указывает на успешное подключение.
- Разверните узел подключения, щелкните его подузел "Tables" и выберите "Execute Command".
- Скопируйте содержимое файла car.sql и вставьте его на вкладку "SQL Command 1" редактора исходного кода.
Это сценарий SQL, который заполнит базу данных информацией об автомобилях.
- Для запуска сценария нажмите кнопку "Run SQL" (
) на панели инструментов редактора исходного кода.
- Выберите "File > New Project".
- На первом экране мастера разверните категорию "Java" и выберите шаблон "Java Desktop Application". Нажмите кнопку "Next".
Шаблон "Java Desktop Application" содержит целый ряд основных функций визуального приложения, в том числе основные пункты меню и команды.
- На странице мастера "Name and Location" выполните следующие действия:
- Введите CarsApp в поле "Project Name". Значение этого поля определяет имя проекта в окне "Projects".
- Установите флажок "Set as Main Project".
- Кроме того, измените значение поля "Project Location", определяющего местоположение метаданных проекта.
- В поле "Choose Application Shell" выберите "Database Application".
- Нажмите кнопку "Next".
- На странице мастера "Master Table" выберите подключение к базе данных для базы данных CAR. Адрес для обращения к базе данных должен выглядеть приблизительно следующим образом: jdbc:derby://localhost:1527/car_database[nbuser on NBUSER]
- Введите пароль (nbuser) для базы данных и установите флажок "Remember Password During This Session".
После подключения к базе данных в поле "Database Table" должна отображаться таблица CAR, а в списке "Columns to Include" должны содержаться имена 10 столбцов базы данных CAR. Пока в приложении будут использоваться только пять из них.
- Выберите нижние пять имен столбцов (начиная с SUN_ROOF и заканчивая MODERNNESS) и нажмите кнопку < для их перемещения в левый столбец. Нажмите кнопку "Next".
- На экране "Detail Options" выберите "Finish".
Затем мастер создает основной интерфейс пользователя с таблицей и подключением к базе данных. Это может занять несколько секунд, поскольку в среде IDE создается проект и код.
К настоящему моменту уже запущено простое приложение с графическим интерфейсом пользователя (GUI), предоставляющим следующие возможности:
- Просмотр и изменение значений в пяти столбцах базы данных CAR.
- Основные пункты меню.
- Сохранение состояния окна между сеансами. При закрытии приложения сохраняется информация о позиции и размере окна. Поэтому при новом открытии приложения окно отображается в той же самой позиции, в которой оно было закрыто.
- Настраиваемое диалоговое окно "About".
- Файлы .properties, содержащие метки в интерфейсе пользователя. Использование файлов .properties является надежным способом сохранения логики кода отдельно от текста, который появляется в интерфейсе пользователя приложения. Такое разделение, помимо прочего, упрощает локализацию программы.
Для просмотра некоторых функций, встроенных в приложение, выполните следующие действия:
- Щелкните правой кнопкой мыши узел проекта и выберите "Run".
Через несколько секунд будет выполнен запуск приложения, и появится окно "Database Application Example". Это окно содержит таблицу и несколько элементов управления, которые позволяют внести изменения в базу данных CARS.
- Выберите первую запись в таблице (для Acura).
- Выберите текстовое поле "Price" и замените существующее значение на 46999. Затем нажмите клавишу Enter.
В таблице должно появиться новое значение. (Однако это значение не отражается в базе данных, если не была нажата кнопка "Save".)
Таким же образом можно обновить любые другие значения таблицы.
- Для создания новой записи нажмите кнопку "New". Затем введите значения для каждого из полей ("Make", "Model", "Price", "Body Style", "Color"). Например, можно вести значения Trabant, Classic, 1000, wagon и blue. Для сохранения введенных значений в базе данных нажмите кнопку "Save".
- Щелкните строку заголовка "Database Application Example" и перетащите приложение в другую область экрана.
- Щелкните левую границу окна "Database Application Example" и переместите ее влево для увеличения размера окна.
- В строке меню "Database Application Example" выберите "File > Exit".
- В среде IDE щелкните правой кнопкой мыши узел проекта и выберите "Run Project".
Окно "Database Application Example" откроется с теми же размерами и расположением, которые оно имело при закрытии приложения.
Соединение между основной таблицей (элемент "JTable") и базой данных обрабатывается комбинацией следующих механизмов, автоматически созданных средой IDE:
- Класс объектов Car.java, использующийся для чтения и записи данных в таблицу базы данных CAR. Классы объектов относятся к особому типу классов, которые позволяют взаимодействовать с базами данных через код Java. Классы объектов используют аннотации Java для отображения полей класса на столбцы базы данных. .
- Файл META-INF/persistence.xml, определяющий соединение между базой данных и классом объектов. Этот файл также известен как единица сохранения состояния.
- Использование привязки компонентов для соединения свойств класса объектов со свойствами элемента "JTable". Привязки компонентов являются новой технологией, основанной на JSR 295, которая, возможно, будет добавлена в новую версию Java SE.
- Объекты entityManager, query и list, определенные в классе CarsAppFrame и перечисленные в окне "Inspector".
- Объект "entityManager" используется для получения и передачи данных в пределах определенной области единицы сохранения состояния.
- Объект "query" определяет, каким образом определенный набор данных извлекается из объекта "entityManager". (Можно изменить способ работы объекта "query" путем выбора этого объекта в окне "Inspector" и изменения свойства query в таблице свойств.) Свойство query использует язык запросов JPA.
- Объект "list" является видимым набором, содержащим данные запроса. Видимый набор представляет собой особый вид набора, с которым может быть связан метод прослушивания, отвечающий за обнаружение изменений в наборе.
При помощи окна "Inspector" и таблицы свойств можно проверить привязку элемента "JTable" к данным:
- В окне "Inspector" выберите "mainPanel [JPanel] > masterScrollPane [ScrollPane] > узел masterTable [JTable]". Затем щелкните вкладку "Binding" в окне "Properties".
- Просмотрите свойства элементов для проверки их привязки к списку.
- Нажмите кнопку с многоточием [...] для вызова средства настройки "Bind masterTable.elements", в котором можно произвести дальнейшую настройку привязок между таблицей и базой данных. Например, средство настройки позволяет определить связываемые столбца таблицы.
Кроме категории "Binding" в таблице свойств также можно использовать пункт "Bind" в контекстном меню.
Добавление новых элементов управления
В этом разделе к форме будут добавлены элементы управления для некоторых первоначально исключенных атрибутов. Вместо таблицы будут добавлены элементы "JSlider" (для атрибутов, определяющих размер и износ шин) и элементы "JCheckbox" (для козырьков и спойлеров).
Для добавления дополнительных элементов выполните следующие действия:
- Добавьте первый ползунок нажатием кнопки "Slider" в окне "Palette", а затем щелчком в форме над кнопкой "New". Перед щелчком в форме для вставки ползунка следует убедиться, что не отображаются горизонтальные направляющие. Эти линии указывают, что ползунок будет вставлен в ту же строку, что и поля или кнопки. Для определения места расположения ползунка в форме см. рисунок ниже.
Примечание: В случае ошибочного размещения этого элемента, приводящего к нежелательным изменениям структуры, для отмены изменений можно использовать команду "Undo". Выберите "Edit > Undo" или нажмите комбинацию клавиш Ctrl-Z.
- При необходимости растяните ползунок влево для его выравнивания по левому краю текстовых полей.
- Растяните ползунок вправо на всю ширину формы.
- Добавьте подпись с левой стороны от ползунка и введите текст Tire Size. (Для изменения текста сначала щелкните подпись.)
- Под первым ползунком разместите второй и при необходимости скорректируйте его ширину и выравнивание.
- Добавьте еще одну подпись под подписью "Tire Size" и введите текст Modernness.
- Под ползунками добавьте два флажка с текстом Spoiler и Sun Roof. (Для изменения текста сначала щелкните флажок один раз и через некоторое время щелкните его второй раз. Можно также щелкнуть флажок правой кнопкой мыши и выбрать "Edit Text".)
Форма должна выглядеть примерно следующим образом:

"
Привязка элементов управления к значениям таблицы
В этом разделе будут продемонстрированы функции привязки компонентов для связывания значений ячеек таблицы с состоянием добавленных элементов управления. Это позволит изменять значения ячеек таблицы с помощью ползунков и флажков.
Для привязки ползунков к соответствующим элементам таблицы:
- В форме щелкните правой кнопкой мыши ползунок "Tire Size" и выберите "Bind > value".
- В раскрывающемся списке "Binding Source" диалогового окна "Binding" выберите "masterTable".
- В раскрывающемся списке "Binding Expression" выберите "selectedElement > tiresize".
"
- Щелкните правой кнопкой мыши ползунок "Modernness" в форме и выберите "Bind > value".
- В раскрывающемся списке "Binding Source" диалогового окна "Binding" выберите "masterTable".
- В раскрывающемся списке "Binding Expression" выберите "selectedElement > modernness".
Для привязки флажков к соответствующим элементам таблицы:
- Щелкните правой кнопкой мыши флажок "Spoiler" в форме и выберите "Bind > selected".
- В раскрывающемся списке "Binding Source" диалогового окна "Binding" выберите "masterTable".
- В раскрывающемся списке "Binding Expression" выберите "selectedElement > spoiler".
- Для закрытия диалогового окна "Bind" нажмите кнопку "OK".
- Щелкните правой кнопкой мыши флажок "Sun Roof" в форме и выберите "Bind > selected".
- В раскрывающемся списке "Binding Source" диалогового окна "Binding" выберите "masterTable".
- В раскрывающемся списке "Binding Expression" выберите "selectedRow > sunRoof".
- Нажмите кнопку "OK".
Теперь можно изменять значения базы данных с помощью ползунка и флажков.
Для проверки функционирования флажков и ползунков:
- Откройте окно "Services".
- Щелчком правой кнопкой мыши выберите "Databases > jdbc:derby;//localhost:1527/car_database" и нажмите кнопку "Connect" для подключения к базе данных.
- Щелчком правой кнопкой мыши выберите "Databases > jdbc:derby;//localhost:1527/car_database > Tables > node" и выберите "View Data".
- Просмотрите значения SUN_ROOF, SPOILER, TIRE_SIZE и MODERNNESS для первой записи.
- Для запуска приложения выберите "Run > Run Main Project".
Запущенное приложение должно выглядеть следующим образом.
"
- В запустившемся приложении выберите первую запись.
- Переместите ползунки и измените состояние флажков.
- Для сохранения значения в базе данных нажмите кнопку "Save".
- В окне "Services" снова воспользуйтесь командой "View Data".
В базе данных должны отобразиться измененные значения.
Для более наглядной демонстрации привязки компонентов в этом разделе будет добавлен пользовательский элемент для отображения цвета выбранного автомобиля. Свойства этого компонента должны быть связаны с соответствующими элементами таблицы. При повторном запуске приложения изображение автомобиля будет изменяться в зависимости от выбранной строки и изменения значений различных полей.
Для использования элемента "CarPreview" в проекте "CarsApp":
- Загрузите файл CarPreview.zip, если это не было выполнено ранее.
- При помощи стандартного средства архивации ZIP извлеките файлы из архива ZIP.
- Выберите "File > Open Project", перейдите к извлеченным данным и выберите проект "CarPreview".
- Нажмите кнопку "Open Project".
Проект открывается в среде IDE.
- Щелкните правой кнопкой мыши узел "CarPreview" и выберите "Build".
Выполняется компиляция файлов в проекте, после чего класс "CarPreview" можно будет использовать в качестве компонента, добавляемого в формы посредством перетаскивания.
Этот элемент создавался как элемент JavaBeans, поэтому его можно добавить в окно "Palette", что удобно для дальнейшего использования этого элемента в различных приложениях. Однако в данном случае этот элемент перетаскивается в приложение непосредственно из окна "Projects".
Для добавления элемента "CarPreview" к приложению:
- В окне "Projects" выберите "Car Preview > Source Packages > carpreview > nodes".
- Перетащите класс "CarPreview.java" в форму. Для правильного размещения изображения в области, расположенной ниже меню, поместите его в таблицу, выровняйте по левому краю относительно других элементов управления и зафиксируйте по нижней линии строки меню, как показано на рисунке ниже.
- Измените размеры рисунка по горизонтали в соответствии с размером всей формы.
- Установите привязку всех свойства компонента "CarPreview" к соответствующим атрибутам "selectedElement" в masterTable, аналогично привязке ползунков и флажков к элементам в компоненте masterTable. В таблице свойств используйте меню "Bind" или вкладку "Binding".
- Снова запустите приложение CarApp.
В работающем приложении можно увидеть, как изменяется элемент "CarPreview" при выборе различных строк таблицы, изменении значений таблицы, перемещении ползунков и установке/снятии флажков.
На нижеприведенном рисунке показано готовое работающее приложение.
Что дальше?
В этом руководстве приведена лишь общая информация о поддержке платформы приложений Swing и привязке компонентов в среде IDE.
Для получения более подробных сведений о проектировании приложений с графическим интерфейсом см. Проектирование графического интерфейса Swing.
Для получения дополнительных сведений об использовании привязки компонентов в среде IDE см. Привязки компонентов и данных в настольном приложении.
Дополнительная информация