在Lwuit,如何处理键盘导航事件?

时间:2011-11-16 09:35:53

标签: java-me lwuit lwuit-resource-editor

在我正在构建的应用程序中,我有Tabs和每个Tab的列表。我想要的行为是当我按下向左/向右导航键时,所选的标签将会改变。当我按向上/向下导航键时,列表将更改选择索引。

我使用LWUIT GUI构建器生成StateMachine/StateMachineBase类。

我一直在努力解决这个问题。请帮忙。

2 个答案:

答案 0 :(得分:1)

为什么你的生活变得复杂?只需在您的班级中使用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);
}

答案 1 :(得分:1)

Pheromix的回答是正确的,但他没有考虑UIBuilder。要覆盖UIBuilder中的表单创建,请覆盖以下方法:

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

有一个选项可以覆盖Tab选择行为,但为了获得最准确的行为,这可能是最佳方法。