我有一个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
对话框的事实相冲突。覆盖它的唯一方法是在对话框中执行类似的操作
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 ...
有没有办法让输入行为像对话框中的选项卡而不试图关闭他?
感谢
答案 0 :(得分:1)
在对话框类中,覆盖 createButtonsForButtonBar()方法。
当为“OK”按钮调用 createButton()时,此方法的默认实现为'defaultButton'参数传递'true'。
如果你传递'假',我认为你会有你想要的行为:
@Override
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, false);
createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
}