| // |
| // 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 с помощью настройщика GridBag |
| :jbake-type: tutorial |
| :jbake-tags: tutorials |
| :jbake-status: published |
| :icons: font |
| :syntax: true |
| :source-highlighter: pygments |
| :toc: left |
| :toc-title: |
| :description: Создание простой формы Java с помощью настройщика GridBag - Apache NetBeans |
| :keywords: Apache NetBeans, Tutorials, Создание простой формы Java с помощью настройщика GridBag |
| |
| Авторы: Ян Стола (Jan Stola), Томас Павек (Tomas Pavek), Алена Сташкова (Alyona Stashkova) |
| |
| Этот учебный курс является первой частью в комплекте из двух частей, в которой описывается разработка простой формы Java с помощью базовых функций настройщика GridBag IDE NetBeans. |
| Этот курс разработан как руководство по созданию компоновки компонентов интерфейса пользователя, не требующему написания кода компоновки вручную, а также по процессу внесения дополнительных изменений в существующую форму для реализации конкретной компоновки, необходимой для проекта. |
| |
| Каждая из статей в этом курсе охватывает свой набор функций. |
| |
| * Часть 1. Создание простой формы Java с помощью настройщика GridBag |
| * Часть 2. Создание расширенной формы Java с помощью настройщика GridBag |
| |
| |
| image::images/netbeans-stamp-80-74.png[title="Содержимое на этой странице применимо к IDE NetBeans 7.1 или более поздней версии"] |
| |
| |
| *Для работы с этим учебным курсом требуется следующее программное обеспечение и материалы.* |
| |
| |=== |
| |Программное обеспечение или материал |Требуемая версия |
| |
| |link:http://netbeans.org/downloads/index.html[+IDE NetBeans+] |7.1 и более поздние |
| |
| |link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Комплект для разработчика на языке Java (JDK)+] |Версия 6, 7 или 8 |
| |
| |link:https://netbeans.org/projects/samples/downloads/download/Samples%252FJava%252Fgbcustomizer-basic-tutorial.zip[+gbcustomizer-basic-tutorial.zip+] |Архив с демонстрационным проектом, содержащим начальную и целевую компоновки учебного курса. |
| |=== |
| |
| *Примечания* |
| |
| * Проект, используемый в качестве отправной точки для данной серии, можно загрузить в форме архива ``.zip`` . |
| * В данном руководстве основное внимание уделено созданию структуры контейнера. Добавление функциональных возможностей к графическому интерфейсу выходит за его рамки. |
| |
| |
| == Открытие примера проекта |
| |
| 1. Загрузите проект link:https://netbeans.org/projects/samples/downloads/download/Samples%252FJava%252Fgbcustomizer-basic-tutorial.zip[+gbcustomizer-basic-tutorial.zip+] в любую папку на своем компьютере и разархивируйте его. |
| 2. На вкладке 'Проекты' выберите ``Файл`` > ``Открыть проект`` , перейдите в проект ``gbcustomizer-basic-tutorial`` , распакованный на предыдущем этапе, и нажмите 'Открыть проект'. Папка проекта может находиться в содержащей папке, также именуемой ``gbcustomizer-basic-tutorial`` . |
| 3. В диалоговом окне 'Разрешение проблем ссылок' нажмите 'Разрешить'. IDE автоматически загружает библиотеки JUnit и JUnit 4. Установите требуемые подключаемые модули, следуя инструкциям установщика IDE NetBeans. По завершении установки нажмите кнопку "Готово". |
| 4. Разверните ``Source Packages`` ("Пакеты исходного кода") > ``Tutorial`` ("Руководство") и дважды щелкните ``ContactsBasicInitial.java`` . |
| В конструкторе графического интерфейса откроется образец формы в режиме конструктора. |
| |
| [.feature] |
| -- |
| image::images/sampleform-small.png[role="left", link="images/sampleform.png"] |
| -- |
| |
| |
| == Обзор настройщика GridBag |
| |
| Настройщик разметки GridBag является одним из наиболее гибких и сложных средств управления компоновкой, предоставляемых платформой Java. Этот настройщик помещает компоненты в сетку столбцов и строк, позволяя указанным компонентам охватывать несколько строк или столбцов. Различные строки могут иметь разную высоту. Аналогично, различные столбцы могут иметь разную ширину. По сути, GridBagLayout помещает компоненты в прямоугольники (ячейки) сетки и использует предпочтительные размеры компонентов для определения размера ячеек. |
| |
| Для отображения настройщика GridBag выполните следующие действия: |
| |
| 1. В режиме конструктора выберите форму JFrame. |
| 2. Щелкните форму правой кнопкой мыши и выберите ``Customize Layout`` ("Настроить структуру") из контекстного меню. |
| Откроется диалоговое окно настройки компоновки, как показано ниже. |
| |
| [.feature] |
| -- |
| image::images/customizerdialog-small.png[role="left", link="images/customizerdialog.png"] |
| -- |
| |
| *Примечание.* В этом учебном курсе GridBagLayout уже задан. При работе с другой формой, в шаге 2 выше, щелкните правой кнопкой мыши форму и выберите ``Настроить компоновку`` > ``Компоновка GridBag`` в контекстном меню (при этом будет включен элемент меню ``Настройка компоновки`` ). Затем завершите процедуру. |
| |
| |
| === Область сетки |
| |
| Область Grid ("Сетка") находится на правой стороне диалогового окна Customize Layout ("Настроить компоновку"). Она показывает компоновку сетки компонентов. |
| Компоненты в этом образце формы уже добавлены, но не скомпонованы правильно. |
| |
| |
| === Панель инструментов |
| |
| Панель инструментов с пятью кнопками располагается над областью сетки. Она предоставляет удобный доступ к часто используемым командам, таким как отмена, повтор, включение одинаковых интервалов, скрытие пустых строк и столбцов, а также проверка местоположения. |
| |
| image::images/toolbar.png[] |
| |
| |
| === Настройщик свойств |
| |
| Property Customizer ("Настройщик свойств") расположен в верхнем левом углу диалогового окна Customize Layout ("Настроить компоновку"). Это позволяет с легкостью вносить изменения в наиболее распространенные ограничения компоновки, такие как привязки ( ``anchor`` ), вставки ( ``inset`` ) и др. |
| |
| image::images/propcustomizer.png[] |
| |
| |
| === Таблица свойств |
| |
| Property Sheet ("Таблица свойств") расположена под Property Customizer ("Настройщик свойств"). Она показывает ограничения компоновки выбранных компонентов. |
| |
| image::images/propsheet.png[] |
| |
| |
| == Формирование компоновки |
| |
| Компоненты для формы ``ContactsBasicInitial`` добавляются в виде одной строки. GridBagLayout формирует такую структуру компонентов, если не указано ограничений компоновки. |
| |
| |
| === Перемещение |
| |
| Компоненты можно перемещать по желанию, используя простое перетаскивание. Выбранные компоненты выделяются зеленым. При перетаскивании компонента его свойства ``Grid X`` ("Положение на оси Х сетки") и ``Grid Y`` ("Положение на оси Y сетки") меняются, отражая его новое положение. Новые столбцы и строки автоматически создаются по мере надобности. |
| |
| Для создания компоновки, подобной показанной на рисунке ниже, переместите компоненты из столбцов с 2 по 11 следующим образом: |
| |
| 1. Перетащите метку ``Surname:`` и соседнее текстовое поле в первые две ячейки второй строки. |
| 2. Перетащите метку ``Street:`` и соседнее текстовое поле, а также соседнюю кнопку ``Browse`` , в первые три ячейки третьей строки. |
| 3. Перетащите метку ``City:`` и соседнее текстовое поле, а также соседнюю кнопку ``Browse`` , в первые три ячейки четвертой строки. |
| 4. Перетащите метку ``State:`` и соседнее поле со списком в первые две ячейки пятой строки. |
| |
| Теперь размещение компонентов соответствует целевой структуре. |
| |
| [.feature] |
| -- |
| image::images/layout1-small.png[role="left", link="images/layout1.png"] |
| -- |
| |
| *Примечание.* При перемещении компонента целевые ячейки выделяются зеленым цветом. |
| |
| |
| === Изменение размера |
| |
| Размер компонента можно изменить перетаскиванием маленьких квадратных маркеров изменения размера, появляющихся по периметру компонента, когда он выбран. |
| |
| Для изменения размера текстовых полей ``First Name:`` и ``Surname:`` , так чтобы они занимали две соседние ячейки, выполните описанные ниже действия: |
| |
| 1. Удерживая клавишу Control, щелкните два компонента JTextField, чтобы выбрать их. |
| 2. Когда оба JTextField выбраны, наведите курсор на правый край ячейки, щелкните и перетащите, пока оранжевая выделенная вспомогательная линия не охватит соседние ячейки в столбце 2 справа. |
| 3. Отпустите курсор, чтобы изменить размер компонентов. |
| |
| Текстовые поля ``First Name:`` и ``Surname:`` расширяются, чтобы охватить две ячейки, как показано на следующей иллюстрации. Занятые ячейки здесь выделены. |
| |
| [.feature] |
| -- |
| image::images/tfieldsresized-small.png[role="left", link="images/tfieldsresized.png"] |
| -- |
| |
| |
| === Указание ограничения компоновки Fill ("Заполнить") |
| |
| Хотя текстовые поля ``First Name:`` и ``Surname:`` занимают по две ячейки, для них указан предпочтительный размер, поэтому они размещаются в середине области отображения. Так что сейчас нам нужно заполнить всю область двух ячеек, используя ограничение компоновки ``Fill`` ("Заполнить"). |
| |
| Чтобы текстовые поля стали достаточно широкими для заполнения их областей отображения по горизонтали без изменения своей высоты, в поле со списком ``Fill`` ("Заполнить") области Property Sheet ("Таблица свойств") выберите ``Horizontal`` ("По горизонтали"). |
| |
| [.feature] |
| -- |
| image::images/horizontalset-small.png[role="left", link="images/horizontalset.png"] |
| -- |
| |
| |
| === Предварительный просмотр |
| |
| Теперь, когда компоновка формы ``ContactsBasicInitial`` успешно создана, можно опробовать в деле интерфейс, чтобы увидеть результаты. Предварительный просмотр формы во время работы осуществляется нажатием кнопки Test Layout ("Протестировать компоновку") (image::images/testbutton.png[]) на панели инструментов настройщика. Форма откроется в отдельном окне, позволяющим выполнить тестирование перед переходом к сборке и исполнению. |
| |
| image::images/designpreview.png[] |
| |
| Предварительный просмотр полезен при тестировании динамического поведения компоновки, т. е., того, как компоновка ведет себя при изменении размера созданного контейнера. |
| |
| |
| === Указания ограничений весов X и Y |
| |
| Указание ограничений весов существенно влияет на внешний вид компонентов GridBagLayout. Вес используется для определения того, как распределять пространство между столбцами (Weight X (Вес X)) и строками (Weight Y (Вес Y)); это важно при указании поведения в случае изменения размеров. |
| Как правило, веса находятся в промежутке между крайними членами пропорции 0.0 и 1.0. Значения между ними используются по мере необходимости. Большее число указывает, что строке или столбцу компонента следует выделить больше пространства. |
| |
| Если попытаться изменить горизонтальный размер просмотренного контейнера, то можно будет увидеть, что размер компонентов остался прежним, и они сосредоточены в центре контейнера. Даже поля ``First Name:`` и ``Surname:`` , у которых ограничение Fill ("Заполнение") установлено на Horizontal ("Горизонтальное"), не выросли в размере, поскольку ограничение Fill относится ко внутренней области ячейки, а не к ее размеру. Другими словами, значение атрибута Fill, отличное от ``none`` , означает, что компонент *"может"* вырасти, а не что он *"хочет"* вырасти. |
| Ограничения компоновки Weight X ("Вес Х") и Weight Y ("Вес Y") определяют, *"хочет"* ли компонент вырасти по горизонтали и вертикали. |
| Когда два компонента в строке (или столбце) имеют ненулевые значения Weight X (или Weight Y), соотношение значений определяет, насколько вырастут отдельные компоненты. Например, если значения равны 0.6 и 0.4, первый компонент получит 60% доступного дополнительного пространства, а второй 40%. |
| |
| Чтобы обеспечить правильное изменение размера созданного контейнера по горизонтали, выполните следующие действия: |
| |
| 1. Выберите текстовое поле справа от метки ``First Name:`` в области сетки настройщика GridBag. |
| 2. Введите ``1.0`` в поле значения ограничения компоновки ``Weight X`` и нажмите ENTER. |
| 3. Выберите текстовое поле справа от надписи ``Фамилия:`` в области сетки настройщика GridBag. |
| 4. Введите ``1.0`` в поле значения ограничения компоновки ``Weight X`` и нажмите ENTER. |
| 5. Выберите текстовое поле справа от подписи ``Street`` в области сетки настройщика GridBag. |
| 6. Выберите ``Horizontal`` в поле со списком ``Fil`` l и нажмите ENTER. |
| 7. Введите ``1.0`` в поле значения ограничения компоновки ``Weight X`` и нажмите ENTER. |
| 8. Выберите текстовое поле справа от подписи ``City`` в области сетки настройщика GridBag. |
| 9. Выберите ``Horizontal`` в поле со списком ``Fil`` l и нажмите ENTER. |
| 10. Введите ``1.0`` в поле значения ограничения компоновки ``Weight X`` и нажмите ENTER. |
| |
| Чтобы проверить правильность изменения размеров контейнера по горизонтали, нажмите кнопку Test Layout ("Протестировать компоновку") (image::images/testbutton.png[]) на панели инструментов настройщика и перетащите границы формы ``ContactsBasicInitial`` . |
| |
| image::images/resizedpreview.png[] |
| |
| |
| === Привязка |
| |
| Привязка используется, когда размер компонента меньше размера области отображения, чтобы определить где (внутри области) следует разместить компонент. |
| |
| При изменении горизонтальных размеров формы ``ContactsBasicInitial`` в предыдущем разделе можно было заметить, что поле со списком ``State`` смещается в сторону от метки ``State`` . Поскольку предпочитаемый размер поля со списком меньше размера соответствующей ячейки, GridBagLayout по умолчанию помещает компонент в центр ячейки. |
| |
| Чтобы изменить это поведение, укажите ограничение компоновки ``Anchor`` ("Привязка"), выполнив приведенные ниже действия: |
| |
| 1. Выберите поле со списком справа от надписи ``Состояние`` и нажмите кнопку со стрелкой (image::images/arrowbutton.png[]) справа от поля со списком ``Привязка`` в <<01d,окне свойств>> настройщика. |
| 2. Выберите ``Line Start`` ("Начало строки") из раскрывающегося списка. |
| |
| Поле со списком ``State`` теперь прикрепляется к левой стороне формы при изменении горизонтальных размеров последней. |
| |
| [.feature] |
| -- |
| image::images/comboanchored-small.png[role="left", link="images/comboanchored.png"] |
| -- |
| |
| Чтобы метки были выровнены по левой стороне, а не по центру, как сейчас, выполните следующий действия: |
| |
| 1. Выберите метки ``First name:`` , ``Surname:`` , ``Street`` , ``City`` и ``State`` . |
| |
| *Примечание.* Можно выбрать несколько компонентов, нажав левую кнопку мыши на первом компоненте, удерживая его, и перетащив его в нажатом состоянии до последнего компонента, как бы рисуя прямоугольник, который охватывает все метки. После отпускания кнопки мыши все пять компонентов выделяются оранжевыми границами и зеленым фоном, как показано ниже. |
| |
| image::images/multiselect.png[] |
| |
| |
| [start=2] |
| . Измените ограничение компоновки ``Anchor`` ("Привязка") меток на ``Line Start`` ("Начало строки"). |
| Метки выровняются по левой стороне. |
| |
| image::images/linestartanchor.png[] |
| |
| |
| === Интервал |
| |
| По умолчанию между компонентами нет внешних полей. Ограничение ``Inset`` ("Вставка") указывает внешние поля компонента – минимальное расстояние между компонентом и краями его области отображения. |
| |
| В текущей компоновке компоненты располагаются слишком близко друг к другу. Чтобы разделить их, сделайте следующее: |
| |
| 1. Щелчком с удерживаемой клавишей Ctrl выберите все компоненты. |
| 2. Нажмите кнопку справа от текстового поля ограничений Insets ("Вставки"). |
| 3. В отобразившемся диалоговом окне измените значения параметров ``Верх:`` и ``Слева:`` на ``5`` и нажмите OK. |
| |
| image::images/insets.png[] |
| |
| Форма должна выглядеть примерно так же, как форма из файла ``ContactsBasicFinal.java`` . |
| |
| [.feature] |
| -- |
| image::images/contactsbasicfinal-small.png[role="left", link="images/contactsbasicfinal.png"] |
| -- |
| |
| |
| == Заключение |
| |
| В этом кратком учебном руководстве мы создали простую форму. Редактирование компоновки показало, как использовать основные функции настройщика GridBag. |
| Теперь можно перейти ко второй части этого курса, где мы займемся изменением формы ``ContactsAdvancedInitial`` , чтобы познакомиться с расширенными функциями настройщика GridBag. |
| |
| Перейдите к link:../java/gbcustomizer-advanced.html[+Создание расширенной формы Java с помощью настройщика GridBag+] |
| |
| <<top,В начало>> |
| |
| link:/about/contact_form.html?to=3&subject=Feedback:%20Designing%20a%20Basic%20Java%20Form%20Using%20the%20GridBag%20Customizer[+Отправить отзыв по этому учебному курсу+] |
| |
| |
| |
| == Дополнительные сведения |
| |
| Вы закончили учебный курс по созданию простой формы Java с помощью настройщика GridBag. Сведения о добавлении функциональных возможностей к создаваемому графическому интерфейсу приведены в разделах: |
| |
| * link:gui-functionality.html[+Введение в разработку графического интерфейса +] |
| * link:gui-image-display.html[+Обработка изображений в приложении с графическим интерфейсом+] |
| * link:http://wiki.netbeans.org/NetBeansUserFAQ#GUI_Editor_.28Matisse.29[+Часто задаваемые вопросы по GUI Builder+] |
| * link:../../trails/matisse.html[+Учебная карта по приложениям с графическим интерфейсом Java +] |
| * link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG920[+Реализация Java GUI+] в документе _Разработка приложений в IDE NetBeans_ |
| |
| <<top,В начало>> |
| |