В Lwuit, как обрабатывать события навигации клавиатуры? - PullRequest
1 голос
/ 16 ноября 2011

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

Я использовал LWUIT GUI Builder для генерации StateMachine/StateMachineBase класса.

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

Ответы [ 2 ]

1 голос
/ 20 ноября 2011

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

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

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

1 голос
/ 16 ноября 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);
}
...