私が構築しているアプリケーションでは、各タブごとにタブとリストがあります。私が望む振る舞いは、左/右のナビゲーションキーを押すと、選択されたタブが変わります。上/下のナビゲーションキーを押すと、選択リストが変更されます。Lwuitでは、キーパッドのナビゲーションイベントを処理する方法は?
私はStateMachine/StateMachineBase
クラスを生成するためにLWUIT GUIビルダを使用。
私はこれを終日修正しようとしています。助けてください。
私が構築しているアプリケーションでは、各タブごとにタブとリストがあります。私が望む振る舞いは、左/右のナビゲーションキーを押すと、選択されたタブが変わります。上/下のナビゲーションキーを押すと、選択リストが変更されます。Lwuitでは、キーパッドのナビゲーションイベントを処理する方法は?
私はStateMachine/StateMachineBase
クラスを生成するためにLWUIT GUIビルダを使用。
私はこれを終日修正しようとしています。助けてください。
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でフォームの作成を無効にするには、メソッドをオーバーライドします。
なぜあなたの人生は複雑ですか?あなたのクラスでは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);
}
私はその理由もわかりません。私はそれを試みたが、私はできなかった。私はStateMachineクラスからアクセスしようとしたときにフォームはすでに作成されています。 keyRelease()をオーバーライドする機会はありません。 今、私はそれを無効にすることができました。私はそれが適切な実装であるかどうかはわかりません。 beforeMainForm()でf.addGameKeyListener()を追加しました。そこから選択します。 まだSuper Thanx bro! – bernardnapoleon
ありがとうございました! – bernardnapoleon