我有一个ProgressMonitorDialog
对象,其中包含cancel
按钮。我想禁用cancel
按钮的初始焦点。我想从按钮中删除初始焦点的原因是,当批处理操作正在进行时,用户可能会意外地敲击键盘上的键并取消整个操作。如果用户想要取消操作,我希望他们按Tab键并手动设置焦点,或者用鼠标单击cancel
按钮。
据我所知,没有简单的方法可以做到这一点。我可以在ProgressMonitorDialog
上创建另一个按钮,该按钮不执行任何操作并将其作为焦点,但这是一个难看的解决方法。特别是因为按钮必须可见或焦点将转移到cancel
按钮。我也试过覆盖创建cancel
按钮并绕过shell.setDefaultButton()
方法但没有运气的方法。
任何线索/建议?
答案 0 :(得分:0)
如果要扩展Dialog类,则可以执行以下操作,覆盖createButtonsForButtonBar(Composite)方法,并在您不希望初始关注的按钮上传入false作为默认按钮参数。
@Override
protected void createButtonsForButtonBar(Composite parent) {
// create OK and Cancel buttons by default
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, false);
createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
}