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

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

Опубликованно: 02.05.2017, 21:59
Последняя редакция, Andry: 20.09.2017 19:48
  • Базовыеe GUI Элементы
    • Обзор
      • Положение и Размер
      • Иерархия классов базовых элементов
    • Панель(Panel)
    • Контейнер(Container)
    • Метка(Label)
      • Прорывной Компонент Слой(Layer)
    • Кнопка(Button)
    • Текстовое поле ввода(TextField)

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

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

Обзор

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

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

Test Button

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

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

Base Element Class Hierarchy

Панель(Panel)

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

  • background: Фоновый компонент для этого элемента, например QuadComponent.
  • border: Компонент границы для этого элемента. Граница находится «под фоном».
  • insets: Значение Insets3f для этого элемента, которое контролирует, как близко border компонент приближается к внешним сторонам установленным другими компонентами. (То же, что и margin в CSS).
  • insetsComponent: переопределяет значение insets с компонентом, который находится под border компонентом и может обеспечивать динамические возможности insets. По умолчанию InsetsComponent, если установлено свойство insets.
  • alpha: Устанавливает alpha для любых ColoredComponents в компоненте стек, а также повторяется любые элементов потомков. Это может использоваться для уменьшения ввода/вывода всей иерархии элементов GUI.

См. Раздел «Прорывной Компонент Слой(Layer)», где дается обзор того, как сочетаются элементы границы(border), фон(background) и.т.д.

См. Также: javadoc

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

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

Свойства:

  • 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: Устанавливает 3D смещение тени текста относительно основного текста. Это может использоваться, чтобы разместить тень, так чтобы смотрелось дальше или ближе к тексту по мере необходимости. Его также можно использовать для перемещения тени выше текстом, который в сочетании с shadowColor можно использовать вместо искаженного светового эффекта. По умолчанию используется Vector3f(1,-1,-1).

Прорывной Компонент Слой(Layer)

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

Test Button1

Поскольку Кнопка(Button) наследует все параметры своих компонентов слоёв от Метки(Label), изображение работает и здесь. Единственное отличие между Кнопкой(Button) и Меткой(Label) в этом случае заключается в том, что у Кнопки(Button) обычно есть фон(background) по умолчанию, а у Метки(Label) нет.

Слой «границы(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)», где дается обзор того, как сочетаются элементы границы(border), фон(background) и.т.д.

См. Также: javadoc

Текстовое поле ввода(TextField)

Позволяет получать одно строчный или много строчный введённый пользователем текст, если щелкнуть по текстовому полю. Также поддерживает определенные действия с картой клавиш, для того что бы выполнять табуляция ввод и.т.п. добавление записи это actionMap.

Свойства:

  • text: введенное текстовое значение для TextField. Он также может быть установлен в коде для изменения значения.
  • font: устанавливает шрифт, используемый для отображения текста.
  • fontSize: задает размер шрифта отображаемого текста.
  • textVAlignment: устанавливает вертикальное выравнивание текста внутри области элемента. Одно из: VAlignment.Top, VAlignment.Bottom или VAlignment.Center.
  • textHAlignment: устанавливает горизонтальное выравнивание текста внутри области элемента. Одно из них: HAlignment.Left, HAlighnment.Right или HAlignment.Center.
  • color: устанавливает цвет текста.
  • singleLine: устанавливает, является ли этот элемент однострочным или многострочным текстовым полем ввода. По умолчанию используется значение true.
  • preferredWidth: устанавливает предпочтительную ширину текстового поля при использовании в компоновке(layouts).

См. Также: javadoc


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

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

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