В Lwuit, как обрабатывать события навигации с клавиатуры?

В приложении, которое я создаю, у меня есть вкладки и список для каждой вкладки. поведение, которое я хочу, - это когда я нажимаю левую / правую клавишу навигации, выбранная вкладка изменится. когда я нажимаю клавишу навигации вверх/вниз, список меняет индекс выбора.

Я использовал конструктор LWUIT GUI для создания класса StateMachine/StateMachineBase.

Я пытался исправить это весь день. пожалуйста помоги.


person bernardnapoleon    schedule 16.11.2011    source источник


Ответы (2)


Ответ Феромикса правильный, но он не учел UIBuilder. Чтобы переопределить создание формы в UIBuilder, переопределите метод:

protected Component createComponentInstance(String componentType, Class cls) {
    if(cls == com.sun.lwuit.Form.class) {
        return new MyFormSubclass();
    }
    return super.createComponentInstance(componentType, cls);
}

Существует возможность переопределить поведение выбора вкладки, но для получения наиболее точного поведения это может быть лучшим подходом.

person Shai Almog    schedule 20.11.2011

Зачем усложняешь себе жизнь? Просто используйте реализацию метода keyReleased в своем классе. Сделайте тест:

if (display.getGameAction(keyCode) == Display.GAME_LEFT || display.getGameAction(keyCode) == Display.GAME_RIGHT)
{
    if (tab.getSelectedIndex == 0)
        tab.setSelectedIndex(1);
    else
        tab.setSelectedIndex(0);
}
else if (display.getGameAction(keyCode) == Display.GAME_UP || display.getGameAction(keyCode) == Display.GAME_DOWN)
{
    if (list.hasFocus())
        super.keyReleased(keyCode);
}
person pheromix    schedule 16.11.2011
comment
Я тоже не знаю почему. Я пробовал это, но я не могу. когда я пытался получить доступ из класса StateMachine, форма уже создана. у меня нет возможности переопределить keyRelease(); Только сейчас я смог переопределить это. но я не уверен, что это правильная реализация. в beforeMainForm() я добавил f.addGameKeyListener(), чтобы сделать выбор оттуда. Все еще супер, спасибо, братан! - person bernardnapoleon; 16.11.2011