Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lab05_2010_draft3

.pdf
Скачиваний:
33
Добавлен:
07.06.2015
Размер:
2.53 Mб
Скачать

Лабораторная работа № 5. Разработка простого приложения с графическим интерфейсом

Настоящая лабораторная работа предполагает разработку простого графического редактора. Это будет первое графическое приложение, которое Вы . Кроме использования некоторых стандартных визуальных компонентов, Вы также познакомитесь со средствами Java для «низкоуровневого рисования».

Проект № 5. Простой графический редактор.

Простой графический редактор по своим возможностям будет уступать даже Paint в Windows (впрочем, в Ваших силах его доработать). Одна из его основных задач – продемонстрировать, как можно рисовать в java-приложениях.

В отличие от консольных приложений, в которых практически весь код Вы писали вручную, графические приложения, создаваемые с помощью средств разработки таких приложений, содержат достаточно большое количество автоматически сгенерированного кода. Этот код отвечает, в частности, за размещение компонентов в приложении, за связывание компонентов с обработчиками событий и т.п. Нужно отметить, что Java – это не только язык, это система программирования, в которую, в том числе, входят библиотеки, содержащие компоненты. А среда NetBeans является лишь надстройкой над этой системой программирования: и разместить компоненты, и создать обработчики событий можно, не прибегая к помощи какой-бы то ни было визуальной среды. Однако использование среды позволяет быстрее решить такие технические задачи.

Примечание.

Для размещения компонентов в Java существуют специальные компоненты, именуемые менеджерами размещений. Поскольку среда действует «универсальным образом», она нередко генерирует более громоздкий код, нежели тот, который мог бы быть написан вручную. Разумеется, от среды тоже можно его добиться, в частности, используя группирующие компоненты и т.п. Конечно, красивый код – это всегда одно из достоинств приложения. Но пока мы делаем акцент на скорости разработки.

§ 1. Создание проекта

Создайте в NetBeans новый проект как графическое приложение. Для этого в окне New Project (рис. 1., появляющемся после обращения к меню File | New Project), выберите Java Desktop Application и нажмите Next. После этого появится окно (рис.1а), предупреждающее, что фреймворк для библиотеки Swing исключен из следующей версии Java, и рекомендующее использовать для разработки на основе Swing платформу NetBeans. Заметим, что в задачу фреймворка входит определенное упрощение работы с библиотекой Swing, которую можно использовать и без него.

Библиотека Swing — это библиотека графических компонентов, таких как кнопки, списки, панели, позволяющих разрабатывать графический интерфейс пользователя. Это не единственная библиотека для Java, так, например, в установочный пакет NetBeans входит также библиотека JavaFX, в Eclipse используется SWT.

Рис. 1. Выбор типа нового проекта

Рис. 1а. Предупреждение о библиотеке Swing

В следующем окне New Desktop Application (рис. 2) выберите следующие настройки: имя проекта (Project Name) – SimpleGraphicEditor, местоположение проекта

(Project Location) – W:\JavaProject\LR05_01, остальные – оставьте по умолчанию.

Заметим, что среди остальных настроек есть две еще не встречавшиеся Вам. Первая

– Choose Application Shell (выбрать оболочку приложения), позволяющая выбрать между «обычным приложением» (Basic Application) и приложением баз данных (Database Application). По умолчанию выбрано Basic Application, его и нужно оставить. Вторая – Application Class (класс приложения); по умолчанию установлено значение

SimpleGraphicEditorApp (к имени проекта дописывается App).

Рис. 2. Выбор имени и местоположения нового проекта

Конечно, можно назвать этот класс иначе, но сейчас в этом нет никакой необходимости. Это один из вспомогательных классов при создании приложения с графическим интерфейсом.

Кнопка Next после этого не будет активна (дополнительные настройки требуются при создании приложений баз данных), поэтому нажмите сразу на кнопку Finish, чтобы среда выполнила создание проекта. Это займет некоторое время – более долгое, чем создание консольного приложения, однако и созданная заготовка будет куда более «наполненной».

§ 2. Структура проекта с графическим интерфейсом

Рассмотрим то, что предлагает среда, более детально. Во вкладке Projects отображается, как обычно, состав проекта (рис. 3). В папке Source Packages (исходные коды пакетов) можно видеть сразу три файла с расширением .java. Все три при этом оказываются открыты в среде и их можно просмотреть.

Рис. 3. Содержимое Source Packages

Файл SimpleGraphicEditorView.java (именно его вкладка, как правило, показывается в среде по умолчанию) отвечает за визуальное представление Вашего приложения (рис. 4). У него есть два режима отображения – Design (визуальное размещение компонентов; установлен по умолчанию, отмечен на рисунке) и Source (исходный код).

Чтобы переключиться к отображению в другом виде, нужно нажать кнопку Source. Это позволит Вам увидеть, какой код соответствует созданному окну приложения, в котором Вы могли наблюдать простейшее главное меню (пункты File и Help), а также строку состояния с полоской-индикатором, способной демонстрировать, например, какая часть вычислений уже выполнена и т.п. Пролистав этот файл почти до конца (рис. 5), Вы заметите, что часть кода выделена серым цветом, а часть даже «спрятана» за пометкой «Generation Code». Это та часть кода, которую среда NetBeans не позволит Вам менять вручную. Именно эта часть кода и отвечает за отображенную «картинку».

Вы легко можете убедиться в недоступности этих фрагментов для редактирования, если просто поместите текстовый курсор в «серую» область и попробуете, например, стереть или допечатать какой-нибудь символ. Конечно, это не значит, что Вы не можете, например, переименовать тот или иной визуальный компонент – просто это придется делать средствами среды, чтобы изменения были внесены везде, где это требуется (подобным образом изменения вносятся в код при использовании меню Refactor; в данном же случае имеет место быть «принудительный рефакторинг»)..

Рис. 4. Визуальное представление вновь создаваемого приложения

Если Вы откроете секцию Generated Code, то увидите «внутреннюю кухню» NetBeans – как среда создает и размещает компоненты. На фрагменте, показанном на рис. 6, можно видеть создание менеджера размещений GroupLayoup. При всем том, что поначалу этот код Вам может показаться «пугающим», он вполне «читабелен», и не так сложно в принципе понять, что именно он делает. Собственно, именно от ручного труда по написанию этого кода и избавляют в первую очередь среды программирования (и, в

частности, NetBeans).

После того, как Вы просмотрите скрытый код, будет удобно свернуть его вновь. Для этого нужно будет нажать на знак «–» возле специального комментария (рис. 7). После этого с помощью кнопки Design переключитесь в режим отображения визуальных компонентов.

Отметим, что «белую» часть кода этого файла редактировать можно, и это приходится, например, делать, если функциональности стандартных компонентов из палитры (рис. 8) не хватает. Палитру Вы можете видеть в правой части окна среды NetBeans, когда находитесь в режиме отображения визуальных компонентов.

Нужно отметить, что набор компонентов, предоставляемый средой (вслед за собственно системой программирования Java), весьма аскетичен. В нем есть все самое необходимое для создания пользовательского интерфейса, – но и только. Его нельзя сравнить с тем многообразием, которое, к примеру, предоставляет среда Delphi (язык Delphi, ведущий свое происхождение от Object Pascal).

Рис. 5. Исходный код визуального представления

Рис. 6. Фрагмент Generated Code

Впрочем, нужно отметить, что среда Delphi является, во-первых, платной (что позволяет разрабатывать даже «базовые» компоненты на коммерческой основе), а, вовторых, ориентированной только на ОС Windows (поддержка одной операционной системы дает возможность сделать компоненты более эффективными в том числе и за счет отказа от кроссплатформенности). Для Delphi существует достаточно большое количество компонентов сторонних разработчиков (встречаются и свободно

распространяемые). Для Java компоненты сторонних разработчиков (как распространяемые на платной основе, так и свободно распространяемые) также существуют, но в меньших количествах. Впрочем, заметим, что разработка собственного компонента на Java существенно проще и не требует от программиста дополнительных знаний относительно устройства целевой операционной системы.

Примечание.

В 2006 году была выпущена бесплатная версия Turbo Explorer Delphi (а также Delphi for dotNet, C++ Builder) с ограниченными возможностями, но достаточная для начального изучения возможностей среды и языка. В настоящее время эти версии недоступны для загрузки, и на сайте http://turboexplorer.com предлагается загрузить пробные 30-дневные версии «полноценных» продуктов Embarcadero («наследницы» фирмы Borland, разработавшей Delphi и ряд других продуктов).

Рис. 7. Generated Code можно свернуть

Посмотрим, какие еще файлы были созданы средой NetBeans. Переключитесь на вкладку SimpleGraphicEditorAboutBox.java. Это «заготовка» окна, которое появится, если в меню Help приложения выбрать пункт About. Как и «главное» окно приложения, это окно позволяет переключаться между режимами отображения кода и отображения визуальных компонентов (рис. 9). Если Вы переключитесь в режим отображения кода, то увидите намного более короткий код, нежели могли наблюдать в режиме отображения кода для главного окна.

Файл SimpleGraphicEditorApp.java – последний из рассматриваемых файлов, которые были сгенерированы средой. Он не содержит скрытого кода и отвечает за запуск приложения, о чем свидетельствует функция main() в нем (рис. 10), и за отображение его главного окна. Этот файл наиболее похож на те, которые Вы создавали в предыдущих лабораторных работах: он не содержит никаких визуальных компонентов. Кстати, если Вы внимательно посмотрите на значок файла SimpleGraphicEditorApp.java на панели Projects (можете вернуться к рис. 3), то заметите маленький зеленый треугольник, в точности повторяющий тот, который Вы видите (и, возможно, используете для запуска приложения на выполнение) в главном меню.

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

Рис. 8. Палитра компонентов

Рис. 9. Окно About…

Рис. 10. Метод main() отвечает за запуск приложения

Рис. 11. Панель Inspector

Переключитесь вновь на вкладку файла SimpleGraphicEditorView.java. В ближайшее время мы будем работать именно с этим файлом. Вообще говоря, шаблон, который NetBeans предлагает для создания нового проекта с графическим интерфейсом, насыщен компонентами. Увидеть их можно, обратившись к панели Inspector (будем называть ее Инспектор Объектов) – на рис. 11 все «вложенные компоненты» раскрыты.

Обозначения, используемые в панели Inspector, таковы: возле графического изображения компонента записано его имя (например, statusAnimationLabel), а в квадратных скобках указан его класс (например, JLabel). Выбор на панели Inspector какого-либо компонента приводит к его выделению в главном окне среды (панель доступна только тогда, когда файл открыт в представлении визуальных компонентов).

Заметим, что метки statusMessageLabel и statusAnimationLabel «невидимы», поскольку не содержат текста и практически «стянуты в точку». Однако с помощью Инспектора

объектов можно их увидеть (рис. 12). Попробуйте последовательно выделить каждый элемент в Инспекторе Объектов и посмотрите, какая часть «заготовки» графического приложения при этом выделяется (подсвечивается рамкой другого цвета).

Рис. 12. Метка statusAnimationLabel не содержит текста

§ 3. Коррекция заготовки проекта

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

Нужно сказать, что заготовка проекта, предлагаемого NetBeans, иногда может оказаться «излишне наполненной» компонентами. В частности, для наших целей практически наверняка не понадобится прогресс-индикатор. (Чисто теоретически можно представить себе, что будет нарисован такой большой рисунок, что его сохранение на жесткий диск займет длительное время, и тогда прогресс-индикатор пригодится. Но мы будем полагать, что для создания крупных художественных произведений будет использоваться иное программное обеспечение, нежели наш графический редактор). Поэтому удалим прогресс-индикатор (элемент progressBar) из заготовки.

Переключитесь в режим отображения исходного кода (Source) и найдите внизу объявление поля progressBar класса SimpleGraphicEditorView (рис. 13).

Затем вызовите нажатием правой клавиши мыши контекстное меню, и выберите в нем Refactor, а в открывшемся подменю Safely Deletе (рис. 14). Появится диалоговое окно (рис. 14), в котором (в том числе) можно выполнить предпросмотр того, что намечено к удалению. Для этого следует нажать кнопку Preview. После недолгого «сканирования» проекта появится окно с предупреждением о том, что безопасное удаление требует удаления некоторых элементов кода вручную (рис. 16). Дословно предупредительную надпись можно перевести так: «Обнаружены ссылки на выделенные элементы. Удалите

Соседние файлы в предмете Программирование на Java