2011-11-16 12 views
1

私が構築しているアプリケーションでは、各タブごとにタブとリストがあります。私が望む振る舞いは、左/右のナビゲーションキーを押すと、選択されたタブが変わります。上/下のナビゲーションキーを押すと、選択リストが変更されます。Lwuitでは、キーパッドのナビゲーションイベントを処理する方法は?

私はStateMachine/StateMachineBaseクラスを生成するためにLWUIT GUIビルダを使用。

私はこれを終日修正しようとしています。助けてください。

答えて

1

Pheromixの答えは正しいですが、彼はUIBuilderを考慮していませんでした。これが最善のアプローチであるかもしれない最も正確な動作を取得するが、タブの選択動作を無効にするオプションがあり

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

:UIBuilderでフォームの作成を無効にするには、メソッドをオーバーライドします。

+0

ありがとうございました! – bernardnapoleon

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); 
} 
+0

私はその理由もわかりません。私はそれを試みたが、私はできなかった。私はStateMachineクラスからアクセスしようとしたときにフォームはすでに作成されています。 keyRelease()をオーバーライドする機会はありません。 今、私はそれを無効にすることができました。私はそれが適切な実装であるかどうかはわかりません。 beforeMainForm()でf.addGameKeyListener()を追加しました。そこから選択します。 まだSuper Thanx bro! – bernardnapoleon