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

Меню

Опубликованно: 01.05.2017, 15:17
Последняя редакция, Andry: 01.05.2017 15:17

Класс Menu

Класс Menu расширяет ScrollArea, так же Menu можно изменять и прокручивать, если это поведение включено.

Menu содержит список элементов MenuItems, которые обеспечивают отображение для подменю. Эта реализация меню избавляет от необходимости использования любой формы Menu Manager, поскольку Screen по умолчанию обрабатывает делегирование событий мыши и, следовательно, является (в некотором смысле) Menu Manager. В Menu используется один текстовый элемент с отдельным элементом подсветки, чтобы отображаемые сетки считались равными 3 для меню любой длины.

Особенности:

  • Неограниченный список элементов меню
  • Неограниченное отображение подменю
  • Переключаемые состояния MenuItem (здесь выполняется промежуточная работа)

Меню использует стандартные 3 конструктора, как показано в Кратком руководстве по началу работы, с добавлением единственного логического выражения:

  • IsScrollable — добавляется в конец списка параметров в каждом конструкторе.

Абстрактные Методы событий:

public void onMenuItemClicked(int index, Object value);

Методы, относящиеся к классу Menu:

// Управление меню
menu.addMenuItem(String caption, Object value, Menu subMenu); // null если нет подменю
menu.addMenuItem(String caption, Object value, Menu subMenu, boolean isToggleItem);
menu.addMenuItem(String caption, Object value, Menu subMenu, boolean isToggleItem, boolean isToggled);
menu.insertMenuItem(int index, String caption, Object value, Menu subMenu); // null если нет подменю
menu.insertMenuItem(int index, String caption, Object value, Menu subMenu, boolean isToggleItem)
menu.insertMenuItem(int index, String caption, Object value, Menu subMenu, boolean isToggleItem, boolean isToggled)
menu.removeMenuItem(int index);
menu.removeMenuItem(String caption);
menu.removeMenuItem(Object value);
menu.removeFirstMenuItem();
menu.removeLastMenuItem();

// Методы, связанные с конфигурацией
menu.setMenuOverhang(float menuOverhang);
menu.getMenuOverhang();
menu.getMenuItemHeight();
menu.getMenuPadding();
menu.setPreferredSize(Vector2f preferredSize)

//Методы, связанные с элементами меню
menu.getMenuItems(); // указать пункт меню
menu.getMenuItem(int index);

// Скрыть/показать методы
menu.showMenu(Menu caller, float x, float y); // Caller равен нулю, если не показан другим меню
menu.hideMenu();

// Установка и извлечение внешнего элемента caller
menu.setCallerElement(Element el);
menu.getCallerElement();

Hooks

public void controlHideHook() {  }

Примеры Menu:

Вырежьте и вставьте код ниже в метод simpleInitApp() нового проекта JME, чтобы опробовать его.

flyCam.setDragToRotate(true);
inputManager.setCursorVisible(true);

screen = new Screen(this);
guiNode.addControl(screen);

Menu subMenu = new Menu(
    screen,
    new Vector2f(0,0),
    false
) {
    @Override
    public void onMenuItemClicked(int index, Object value, boolean isToggled) {  }
};
// Добавить элемент меню
subMenu.addMenuItem("Some string caption 1", null, null);
// Добавить элемент меню с возможностью переключения (флажока)
subMenu.addMenuItem("Some string caption 2", null, null, true);
// Добавьте пункт меню с возможностью переключения и установите по умолчанию флажок для отметки
subMenu.addMenuItem("Some string caption 3", null, null, true, true);
screen.addElement(subMenu);

final Menu menu = new Menu(
    screen,
    new Vector2f(0,0),
    false
) {
    @Override
    public void onMenuItemClicked(int index, Object value, boolean isToggled) {  }
};
// Добавить subMenu в качестве подменю к этому пункту меню
menu.addMenuItem("Some caption", null, subMenu);
screen.addElement(menu);

ButtonAdapter b = new ButtonAdapter(screen, new Vector2f(50,50)) {
    @Override
    public void onButtonMouseLeftUp(MouseButtonEvent evt, boolean isToggled) {
        menu.showMenu(null, getAbsoluteX(), getAbsoluteY()-menu.getHeight());
    }
};
b.setText("Show Menu");
screen.addElement(b);

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

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

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