私はEditorPart
次の方法で持っています
protected void addEnterNextListener(final Control controle){
controle.addTraverseListener(new TraverseListener() {
@Override
public void keyTraversed(TraverseEvent e) {
if(e.character == SWT.CR)
controle.traverse(SWT.TRAVERSE_TAB_NEXT);
}
});
}
したがって、次のフィールドに入る動作が必要なフィールドがある場合は、このメソッドを呼び出してフィールドを渡します(例:通常はText
) 。
しかし、この動作が内部で必要にTitledAreaDialog
なったため、と競合します。 EnterがokPressed
ofダイアログを呼び出すという事実。これをオーバーライドする唯一の方法は、ダイアログ内でこのようなことを行うことです。
this.txtCodInterno.addTraverseListener(new TraverseListener() {
@Override
public void keyTraversed(TraverseEvent e) {
if(e.keyCode == 13 || e.keyCode == 16777296){ // Se for qualquer um dos enters
e.doit = false;
txtQuantidade.forceFocus();
}
}
});
これはかなり醜く、すべてのTraverseListenerをオーバーライドさせます...
Enterを閉じようとせずに、ダイアログ内のタブのように動作させる方法はありますか?
ありがとう