Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество
Главная
    Документация jMonkeyEngine
        jMonkeyEngine Уроки и Документация
            Вклады
                Лемур GUI
                    Базовые элементы графического интерфейса

Базовые элементы графического интерфейса

Опубликованно: 02.05.2017, 21:59
Последняя редакция, Andry: 02.05.2017 23:49

Базовые элементы GUI

Основной набор элементов графического интерфейса пользователя Lemur организован как простая иерархия классов, расширяющая пространство JME Spatial, но это в основном для удобства. Каждый подкласс Spatial представляет собой просто установку обычного spatial , которое осуществляют setters/getters для атрибутов элемента GUI, а также удобный конструктор. Внизу это просто Spatial с GuiControl. GuiControl — это то, что дает ему стеки компонентов и отношения родитель/потомок, необходимые для layouts. Все эти элементы GUI созданы быть примером «Рекомендованным», как использовать лежащие в основе Lemur модули для создания новых элементов графического интерфейса. Вероятно, стоит изучить код, если вы когда-либо планируете писать свои собственные элементы.

Обзор

Положение и размер

В OpenGL и jMonkeyEngine нижний левый угол экрана равен 0,0. В UI layouts, из-за этого преобразования зачастую болезненные, если делать их часто. Лемур выбирает идти на компромисс и GUI элементы распологаются в стандартном OpenGL пространстве, но в остальном растет и layout, как если бы 0,0 были в верхнем левом углу.

Test Button

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

Иерархия классов базовых элементов

Base Element Class Hierarchy

Panel(Панель)

Это базовый класс для всех стандартных элементов графического интерфейса. Он поддерживает следующие свойства (поэтому все остальные компоненты также поддерживают эти свойства):

  • Background: фоновый компонент для этого элемента, например QuadComponent.
  • Border: компонент границы для этого элемента. Граница находится «под фоном».
  • Insets: The Insets3f value for this element which controls how far in the border component is pushed in from the outer laid out sides. (То же, что и margin в CSS).
  • InsetsComponent: переопределяет значение вставки компонентом, который находится под граничным компонентом и может обеспечивать динамические возможности вставки. По умолчанию используется InsetsComponent, если установлено свойство insets.
  • Alpha: Устанавливает альфу для любых ColoredComponents в стеке компонентов, а также рекурсирует любые дочерние элементы. Это может использоваться для постепенного уменьшения/уменьшения всей иерархии элементов графического интерфейса.

См. Раздел «Layer Breakout компонента», где дается обзор того, как сочетаются границы элементов фона и т. Д.

См. Также: javadoc

Container(контейнер)

Расширяет Panel для обеспечения поддержки layout потомка. Можно использовать любой из стандартных layout (BorderLayout, SpringLayout и.т.д.) Или любую пользовательскую реализацию GuiLayout. Специфические ограничения layout могут передаваться как часть вызова addChild(), чтобы передавать информацию о том, где и как элемент может входить в layout.

Свойства:

  • layout: макет, используемый этим контейнером.

См. Также: javadoc

Label(метка)

Расширяет Panel для отображения текста и значков. Включает три дополнительных компонента в стек компонентов для текста, тени и значка.

Свойства:

  • Text: текст, который будет отображаться в Label.
  • Icon: слой значка, который может быть любым компонентом, но обычно будет IconComponent.
  • Font: устанавливает шрифт, используемый для визуализации текста.
  • FontSize: задает размер шрифта отображаемого текста.
  • TextVAlignment: устанавливает вертикальное выравнивание текста внутри области элемента. Один из: VAlignment.Top, VAlignment.Bottom или VAlignment.Center.
  • TextHAlignment: устанавливает горизонтальное выравнивание текста внутри области элемента. Один из них: HAlignment.Left, HAlighnment.Right или HAlignment.Center.
  • Color: устанавливает цвет текста.
  • ShadowColor: устанавливает цвет тени. По умолчанию используется значение ‘null’, указывающее, что тени не будет.
  • ShadowOffset: устанавливает трехмерное смещение теневого текста из основного текста. Это может использоваться, чтобы разместить тень, чтобы смотрелась дальше или ближе к тексту по мере необходимости. Его также можно использовать для перемещения тени над текстом, который в сочетании с shadowColor можно использовать вместо этого для выделения скоса. По умолчанию используется Vector3f (1, -1, -1).

Компонент Layer Breakout

Вышеупомянутые слои, объединенные с слоями Panel, объединяются, чтобы выглядеть следующим образом:

Test Button1

Поскольку Button наследует все параметры слоя с Label, изображение работает и здесь. Единственное отличие между Button и Label в этом случае заключается в том, что у Button обычно есть фон по умолчанию, а у метки нет.

Слой «границы(border)» не представлен на диаграмме, но он лежит ниже слоя «фона(background)». Это относительно новый слой по умолчанию, который является одной из причин, по которым стили Button обычно используют «фон(background)» вместо «границы(border)».

См. Также: javadoc

Button

Расширяет Label, чтобы обеспечить поддержку действий клика и кнопок. Она так же включает в себя автоматическое изменение цвета текста при наведении мыши.

Команды действий могут быть зарегистрированы для получения уведомлений о различных событиях кнопок. Метод addClickCommands() обеспечивает удобную поддержку регистрации слушателей «кликов». Так же команды могут быть зарегистрированы для получения уведомлений о следующих действиях: ButtonAction.Down, ButtonAction.Up, ButtonAction.Click, ButtonAction.HighlightOn и ButtonAction.HighlightOff

Включает в себя все свойства Label и дополняется следующими:

  • Enabled: если установлено значение false, кнопка не будет регистрировать команду действия кнопки. Никаких видимых изменений состояния не будет, когда кнопка отключена (пока).
  • pressed: (только чтение) возвращает true, если кнопка в данный момент нажата (нажата или еще нет).
  • HighlightOn: (только чтение) возвращает true, если кнопка находится в состоянии HighlightOn, то есть: указатель мыши наведен на кнопку.

См. Раздел «Layer Breakout компонента», где дается обзор того, как сочетаются элементы границы, фона и.т.д.

См. Также: javadoc

TextField

Позволяет одно строчный или много строчный ввод текста от пользователя, если щелкнуть текстовое поле. Также поддерживает определенные действия с key-map, используемые при вводе текста. Действие добавление текст это actionMap.

Свойства:

  • Text: введенное текстовое значение для текстового поля. Он также может быть установлен в коде для изменения значения.
  • Font: устанавливает шрифт, используемый для визуализации текста.
  • FontSize: задает размер шрифта отображаемого текста.
  • TextVAlignment: устанавливает вертикальное выравнивание текста внутри области элемента. Один из: VAlignment.Top, VAlignment.Bottom или VAlignment.Center.
  • TextHAlignment: устанавливает горизонтальное выравнивание текста внутри области элемента. Один из них: HAlignment.Left, HAlighnment.Right или HAlignment.Center.
  • Color: устанавливает цвет текста.
  • Single Line: устанавливает, является ли этот элемент отдельной строкой или многострочным текстовым полем ввода. По умолчанию используется значение true.
  • PreferredWidth: устанавливает предпочтительную ширину текстового поля при использовании в layouts.

См. Также: javadoc


Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.