08 Разработка графического интерфейса с помощью панели библиотеки
В этой главе описывается панель «Library»(Библиотека) JavaFX Scene Builder и объекты GUI JavaFX, доступные из нее. Предоставляется информация о работе с некоторыми доступными элементами контейнера. В этой главе также обсуждается, как импортировать пользовательские объекты GUI в JavaFX Scene Builder.
Панель «Библиотека», показанная на рисунке 8-1, расположена в левой части главного окна. Вы можете скрыть панель «Библиотека», выбрав «View» (Вид) в главном меню, а затем выбрав «Hide Library»(Скрыть библиотеку) или «Hide Left Side Panel»(Скрыть левую боковую панель), чтобы скрыть ее вместе с панелью «Document»(Документ). Панель «Библиотека» состоит из складных секций для Containers (контейнеров), Controls (элементов управления), Menus (меню), Shapes (фигур), Charts (диаграмм), 3D и прочих элементов, которые доступны для использования при создании макета FXML. Эти элементы графического интерфейса пользователя являются теми же элементами графического интерфейса пользователя JavaFX, которые поставляются с выпуском Java SE. Чтобы найти компоненты графического интерфейса пользователя, такие как TextFlow, SwingNode и 3D-объекты, которые были представлены с выпуском JDK 8, введите FX8
в текстовое поле «Search»(Поиск) панели «Библиотека».
Также есть раздел Custom, в котором перечислены пользовательские компоненты графического интерфейса, которые были импортированы в библиотеку. Элементы настраиваемого типа - это те компоненты графического интерфейса, которые не поставлялись с библиотеками API JavaFX в JDK 8. Дополнительные сведения о том, как импортировать собственные или сторонние настраиваемые компоненты графического интерфейса, см. В разделе Управление настраиваемыми элементами графического интерфейса.
Поддержка элементов трехмерного графического интерфейса ограничена. Вы можете открывать файлы FXML, содержащие 3D-объекты, но вы можете редактировать только некоторые из их свойств через панель «Inspector»(Инспектор), и вы не можете напрямую управлять объектами на панели «Содержание»(Content). Предварительно определенные 3D-формы (Box(прямоугольник), Sphere(сфера) и Cylinder(цилиндр)), доступные в JavaFX API, представлены в разделе «Shapes»(Фигуры) на панели «Библиотека». В разделе 3D находятся объекты, относящиеся к источникам света и камерам. Они доступны в библиотеке, так что вы можете редактировать их свойства и добавлять их fx:id, чтобы на них можно было ссылаться из исходного кода вашего контроллера.
Когда вы открываете новый макет FXML в Scene Builder, это пустой файл. Вы начинаете создавать свой макет, выбирая верхний корневой контейнер в разделе «Containers»(Контейнеры) и добавляя его на панель «Content»(Содержимое) или «Hierarchy»(Иерархия). Затем вы можете добавить в этот корневой контейнер столько контейнеров или элементов графического интерфейса, сколько необходимо для вашего макета FXML.
Чтобы добавить один из элементов графического интерфейса с панели «Библиотека», выполните одно из следующих действий:
-
Выберите элемент из списка на панели «Библиотека» и перетащите его на панель «Содержимое» или на панель «Иерархия».
-
Выберите элемент на панели «Библиотека» и нажмите клавишу Enter.
-
Дважды щелкните выбранный элемент на панели «Библиотека», и он будет добавлен на панель «Содержимое».
-
Щелкните команду «Insert»(Вставить) в строке меню и выберите один из доступных элементов графического интерфейса в раскрывающемся списке. Если макет в настоящее время пуст, элемент добавляется как корневой элемент. Если корневой элемент уже существует и в настоящее время на панели «Иерархия» или «Содержимое» ничего не выбрано, элемент добавляется внутри корневого элемента. В противном случае он добавляется рядом с текущим выбранным элементом.
Используйте текстовое поле поиска, расположенное в верхней части панели, для фильтрации списка элементов графического интерфейса, доступных в библиотеке. Например, при вводе button
в поле поиска отображаются все элементы графического интерфейса пользователя с button в названии.
Справа от текстового поля «Поиск» на панели «Библиотека» находится кнопка меню, при нажатии на которую отображается меню команд, как показано на рисунке 8-2. Команды помогают вам управлять тем, как должно отображаться содержимое библиотеки: в виде длинного списка или в виде групп элементов, перечисленных в отдельных разделах, что используется по умолчанию. Также доступны команды, позволяющие импортировать пользовательские компоненты графического интерфейса в библиотеку. См. Раздел Управление настраиваемыми элементами графического интерфейса для получения дополнительной информации.
При выборе пункта меню «Custom Library Folder»(Папка пользовательской библиотеки) отображается подменю, которое включает в себя «Reveal in native file manager»(Показать в системном файловом менеджере) и команды «Show JAR Analysis Report»(Показать отчет анализа JAR). Выбор команды «Показать в системном файловом менеджере»(где системном файловым менеджером является Finder для платформы Mac OS, Explorer для платформы Windows и Desktop для платформы Linux) открывает файловый менеджер вашей системы в месте расположения папки, содержащей JAR пользовательского компонента. и / или файлы FXML. Команда отключена, если папка Custom Library пуста.
Выбор команды «Показать отчет об анализе JAR» позволяет просматривать отчет об анализе файлов JAR, находящихся в папке пользовательской библиотеки. В этом отчете будут перечислены все классы Java, которые были проверены и определены как пользовательские компоненты, которые не подходят для добавления в библиотеку. Также предоставляется указание на невыполненные критерии, такие как тот факт, что класс не является узлом JavaFX или построителю сцен не удалось создать экземпляр класса. В последнем случае также указано исключение Java.
В следующих разделах обсуждаются некоторые элементы контейнера, доступные на панели «Библиотека», и способы их максимального использования в инструменте JavaFX Scene Builder. Также описано, как управлять пользовательскими типами. Чтобы узнать больше обо всех других элементах графического интерфейса, предлагаемых платформой JavaFX SDK, см. Документацию по API JavaFX.
Управление пользовательскими элементами графического интерфейса
Первый раздел, отображаемый на панели «Библиотека», - это пользовательский раздел, как показано на Рисунке 8-3,. В нем перечислены все настраиваемые элементы графического интерфейса, которые не являются частью библиотек API JavaFX 8, но доступны для использования в макете графического интерфейса. Пользовательский элемент GUI - это класс Java, созданный пользователем или третьей стороной и добавленный в библиотеку доступных компонентов, которые вы можете использовать в своем макете FXML.
Добавление пользовательских компонентов в библиотеку
Вы можете импортировать настроенные компоненты графического интерфейса пользователя с помощью команды «Import»(Импорт) панели «Библиотека». Вы можете добавить любой простой или сложный графический объект из панели «Иерархия» или «Содержимое» в библиотеку и сделать его многократно используемым компонентом, доступным на панели «Библиотека». Вы также можете импортировать графический компонент из документа FXML или импортировать файл JAR и выбрать подмножество пользовательских компонентов, которые он содержит, чтобы сделать их повторно используемые компоненты постоянно доступными в библиотеке.
-
Чтобы импортировать пользовательские компоненты графического интерфейса из файла JAR или FXML:
-
Выберите команду «Import JAR/FXML file»(Импортировать файл JAR / FXML) в меню панели «Библиотека» или перетащите файл JAR или FXML прямо из файлового менеджера вашей системы и перетащите его на панель «Библиотека».
-
В диалоговом окне «Открыть» перейдите к местоположению файла JAR или FXML, который вы хотите импортировать.
Отображается диалоговое окно импорта, подобное тому, что показано на рисунке 8-4. Содержимое JAR-файла проверяется, и в диалоговом окне отображаются все классы Java, которые определены как подходящие пользовательские компоненты. Содержимое файла FXML анализируется, чтобы убедиться, что добавляемый компонент действителен и самодостаточен. -
В диалоговом окне «Импорт» выберите или отмените выбор элементов из списка элементов, которые вы можете импортировать.
-
Щелкните Import Component (Импортировать компоненты).
Импортированные элементы добавляются в раздел «Custom»(Пользовательский) панели «Библиотека». Их можно использовать немедленно, и они остаются в библиотеке даже после перезапуска Scene Builder.
-
-
Чтобы добавить пользовательские объекты графического интерфейса из текущего макета на панель библиотеки:
-
Используя панель «Иерархия» или «Содержимое», выберите автономный компонент в текущем макете.
-
В меню панели «Библиотека» выберите команду «Import Selection» (Импортировать выделение). Либо перетащите выбранный компонент с панели «Содержимое» или «Иерархия» на панель «Библиотека».
Выбранный элемент проверяется, и при обнаружении проблем отображается диалоговое окно ошибки, подобное изображенному на рис. 8-5 . Если ошибок не обнаружено, пользовательский компонент добавляется в библиотеку, и на панели сообщений отображается сообщение. Имя файла FXML, созданного для импортированного выделения, основано на имени корневого элемента. Например, если в вашем выборе корневой элемент относится к классу
Button
, то файл, созданный при первом импорте элемента, будетButton_1.fxml
.Вы также можете импортировать несколько выделений, сделанных на панели «Содержимое» или «Иерархия». Например, вы можете выбрать кнопку и элемент CheckBox на панели «Содержимое» и перетащить оба элемента в библиотеку. В пользовательском разделе панели «Библиотека» появятся две строки для импортированных элементов: одна с именем
Button_1
, а другая с именемCheckBox_1
. Оба хранятся в соответствующих файлах FXML,Button_1.fxml
иCheckBox_1.fxml
, соответственно, и создаются в папке Custom Library.
-
Когда вы импортируете тот же файл JAR или FXML в другое время, новая импортированная версия этого файла заменяет ранее импортированную версию. Если вы импортируете тот же автономный элемент графического интерфейса пользователя из панели «Содержимое» или «Иерархия» в другое время, то созданный файл FXML получит имя с номером версии. Например, если выделенный фрагмент с элементом Button в качестве корня был ранее импортирован, то при втором импорте новый файл FXML, созданный для настраиваемого элемента, будет называться Button_2.fxml
.
Если вы решите, что вам больше не нужны компоненты пользовательского графического интерфейса, вы можете напрямую удалить файлы JAR и FXML из папки Custom Library или удалить всю папку. Это можно безопасно сделать даже во время работы инструмента Scene Builder. Инструмент Scene Builder периодически проверяет содержимое папки Custom Library и соответствующим образом обновляет содержимое библиотеки.
Для работы с папкой Custom Library откройте меню панели Library, щелкните Custom Library Folder и выберите Reveal в собственном файловом менеджере, где родным файловым менеджером является Finder для платформы Mac OS, Explorer для платформы Windows и Desktop для платформы Linux. .
Использование контейнера панели сетки (Grid Pane)
Контейнер Grid Pane позволяет создавать гибкую компоновку элементов графического интерфейса, которые организованы в строки и столбцы. Используйте панель сетки в своем макете, выбрав область сетки в разделе «Контейнер» панели «Библиотека» и перетащив ее на панель «Содержимое» или «Иерархия». Затем вы можете добавить другие элементы графического интерфейса в контейнер Grid Pane, и элементы будут автоматически упорядочены на основе заполнения, зазора и других свойств.
Вы также можете добавить элемент контейнера Grid Pane, чтобы он содержал элементы GUI, которые вы уже добавили в свой макет. Используйте следующие шаги:
-
Выберите «Edit»(Правка), а затем «Select All»(Выбрать все) в главном меню, чтобы выбрать все элементы в макете.
-
Добавьте контейнер «Grid Pane»(Панель сетки), выбрав «Arrange» (Упорядочить)в главном меню, «Wrap in»(Обернуть) и затем «Grid Pane»(Панель сетки) из списка контейнеров.
Пустая и невыделенная панель сетки не отображается на панели «Содержимое». Чтобы сделать его границы видимыми, щелкните соответствующий слой на панели Hierarchy для этого элемента Grid Pane. Чтобы работать с определенной панелью сетки, щелкните непосредственно в ее периметре, но не на любом из элементов, которые она содержит. Если этот параметр выбран, панель сетки окружена вкладками с рамкой светло-синего цвета, и отображается каждый соответствующий номер индекса, как показано на рисунке 8-6. Чтобы выбрать один столбец или строку, щелкните вкладку границы выделения. Вкладки выбранного столбца или строки приобретают желтый фон, как показано в столбце 1 на рисунке 8-6. Вы также можете выбрать несколько строк или несколько столбцов одновременно, чтобы сразу редактировать значения для этих выбранных элементов. Однако вы не можете одновременно выбрать комбинацию строк или столбцов.
Чтобы увидеть подменю действий, которые вы можете выполнять на панели сетки, выполните одно из следующих действий:
-
Щелкните правой кнопкой мыши в любом месте панели сетки и выберите команду из контекстного меню.
-
В главном меню выберите «Modify»(Изменить), а затем - «Grid Pane»(Панель сетки).
Вы можете перемещать строку вверх или вниз, а также перемещать столбец влево или вправо. Вы также можете удалить или добавить строку или столбец, а также увеличить или уменьшить диапазон для строки или столбца.
Раздел «Макет»(Layout) на панели «Инспектор»(Inspector ) также позволяет вам изменять текущую выбранную «Grid Pane»(Панель сетки). Свойства, связанные с выбранной строкой или столбцом, отображаются, и ими можно управлять в разделах GridPane Row или GridPane Column.
Вы можете переместить элемент из одной ячейки сетки в другую существующую ячейку сетки. На панели Content выберите элемент, который вы хотите переместить, и, удерживая кнопку мыши, перетащите элемент в целевую ячейку сетки, как показано на рисунке 8-7. Обратите внимание, что целевая ячейка сетки меняет цвет на серый, как только вы наводите на нее курсор. Когда вы отпускаете кнопку мыши, элемент перемещается в целевую ячейку сетки на панели сетки.
Чтобы переместить элемент в новую строку или столбец, который еще не был создан, выберите элемент на панели «Содержимое» и перетащите его на разделительную линию, которая находится между строками или столбцами, куда вы хотите вставить новую строку или столбец. При наведении курсора мыши на разделитель ячеек линия разделителя становится более толстой и серой. Когда вы отпускаете курсор, создается новая строка или столбец, а элемент помещается в целевую ячейку сетки. На рис. 8-8 показан элемент Button, перетаскиваемый в новую ячейку сетки во второй строке нового столбца, который будет вставлен.
Работа с контейнером границы панели (Border Pane)
Контейнер Border Pane позволяет размещать элементы графического интерфейса пользователя в верхней, правой, левой, нижней и центральной позициях контейнера. Используйте панель границы в своем макете, выбрав элемент BorderPane в разделе «Контейнер» панели «Библиотека» и перетащив его на панель «Содержимое». На рис. 8-9 показана панель Hierarchy после добавления элемента BorderPane.
Вы можете добавить элемент GUI в контейнер Border Pane, перетащив элемент с панели Library в определенное место в Border Pane. Вы также можете перетащить элемент с панели «Библиотека» на панель «Иерархия», как показано на рисунке 8-10. Обратите внимание, что когда элемент перетаскивается над целевым слоем на панели Hierarchy, соответствующее положение слоя на панели Border Pane изменяется на более темный оттенок цвета, как показано на правой стороне рисунка 8-10.
Вы можете перемещать элемент из одного положения в другое на панели границ. На панели «Содержимое» или на панели «Иерархия» выберите элемент, который вы хотите переместить, и перетащите элемент в целевое положение, как показано на рисунке 8-11. Обратите внимание, что цвет фона целевой позиции становится темнее, как только вы наводите на нее курсор. Когда вы отпускаете кнопку мыши, элемент перемещается в целевое положение на панели границ.
Использование контейнера панели вкладок (Tab Pane)
По умолчанию панель вкладок содержит два элемента вкладки, каждый из которых содержит элемент панели привязки, как показано на рис. 8-12.
Вы можете изменить заголовок элемента Tab по умолчанию, дважды щелкнув вкладку и напрямую отредактировав ее свойство Text на панели Content. Чтобы добавить еще один элемент Tab в контейнер панели вкладок, перетащите элемент вкладки с панели «Библиотека» на панель вкладок на панели «Содержимое» или панели «Иерархия». Новый элемент Tab добавляется справа от любых существующих элементов Tab. Чтобы изменить порядок элементов вкладки на панели вкладок, используйте панель «Иерархия». Перетащите строку элемента Tab на панели Hierarchy в целевое место в контейнере Tab Pane. Вы также можете использовать панель «Содержимое», чтобы перетащить ее вкладку в целевое место в контейнере панели вкладок.
Чтобы добавить элементы графического интерфейса пользователя в область привязки элемента Tab, щелкните заголовок целевого элемента Tab, чтобы выбрать его. Перетащите элемент GUI, который вы хотите добавить, с панели «Библиотека» на элемент Tab, как показано на рис. 8-13.
Рисунок 8-13 Добавление элементов графического интерфейса из панели библиотеки в элемент вкладки на панели содержимого
В зависимости от длины заголовка каждого элемента вкладки и количества элементов вкладки в контейнере панели вкладок наступает момент, когда некоторые вкладки становятся скрытыми. Когда это происходит, к строке меню контейнера Tab Pane автоматически добавляется раскрывающееся меню, как показано на рисунке 8-14. Это раскрывающееся меню позволяет выбрать нужную вкладку. Это меню неактивно на панели «Содержимое», но работает при просмотре макета в окне предварительного просмотра. Если размер контейнера панели вкладок изменить так, чтобы все элементы вкладки были полностью видны, раскрывающееся меню автоматически удаляется из строки меню панели вкладок.
Работа с элементами управления меню
Раздел «Элементы управления» на панели «Библиотека» содержит три элемента управления, относящихся к меню: панель меню, кнопка меню и кнопка разделения меню. Когда вы перетаскиваете MenuBar с панели «Библиотека» на панель «Содержимое», она заполняется элементами меню с пометками «Файл», «Правка» и «Справка». По умолчанию каждый из этих элементов меню содержит один элемент пункта меню, как показано на рисунке 8-15.
Элементы меню и элемента меню не имеют графических представлений, которые отображаются на панели «Содержимое», поэтому вы можете использовать только панель «Иерархия» для выбора и управления этими элементами. Вы можете изменить порядок отображения элементов меню в строке меню, выбрав элемент меню на панели «Иерархия» и перетащив его в новое место в меню, где он должен отображаться. Вы можете напрямую изменить текстовое свойство элемента меню или элемента меню, выбрав его и щелкнув текстовую область, что переведет вас в режим редактирования. Вы также можете использовать раздел «Свойства» на панели «Инспектор» для изменения текстового поля.
Вы можете добавить другие элементы, связанные с меню, такие как другой элемент меню или элемент меню «Separator»(Разделитель), перетащив элемент с панели «Библиотека» в желаемое место меню на панели «Иерархия». Чтобы создать меню второго уровня, поместите элемент «Меню» в уже существующий элемент «Меню» на панели «Иерархия».
Используйте меню «Preview»(Предварительный просмотр), чтобы увидеть свою панель меню в действии. В окне предварительного просмотра вы можете щелкнуть пункт меню и любое его подменю.
Предыдущая | Следующая |