ここでアーカイブしようとしているのは、上下矢印キーを使用してコントロール内を移動することです。 コードは表示オブジェクト内でこのようになります。奇妙に思えるかもしれませんが、これは必須条件です: -/上下矢印キーを使用したトラバース - 処理ボタンのFocusOut
displayObj.addFilter(SWT.KeyDown,new Listener() {
public void handleEvent(Event event) {
Control ctrl= (Control) event.widget;
if(event.keyCode==SWT.ARROW_UP) {
ctrl.traverse(SWT.TRAVERSE_TAB_PREVIOUS);
} else if(event.keyCode==SWT.ARROW_DOWN) {
ctrl.traverse(SWT.TRAVERSE_TAB_NEXT);
}
}
});
これは、テキストとコンボボックスでうまくいきます。しかし、3番目のフィールドはButton(compositeObj,SWT.CHECK
)です。この時点では、SWT.FocusOut
イベントが生成され、その直後にあるコンボボックスの代わりに、次の「OK」「Cancel」ボタンにフォーカスが移動するため、これは機能しません。タブのトラバースは、テキスト、テキスト、ボタン、コンボ、ボタン、ボタンのように正しい順序で正しく行われます。 UPおよびDOWN矢印イベントを個別に処理する方法がないため、FocusListener
を使用することはできません。
これを行う方法は他にありますか。すべての返信をお寄せいただきありがとうございます。
ウィジェットの順序は正しいですし、タブを使用すると、トラバーサルは正常に機能しますか?つまり、チェックボックス 'Button'からタブアウトすると、OKボタンではなくコンボに移動しますか? –
チェックボックスからタブアウトすると、OKボタンではなくコンボに移動します。 – Murali