JFace - 从对话框中删除键盘焦点

时间:2015-03-29 16:14:45

标签: java jface

我有一个ProgressMonitorDialog对象,其中包含cancel按钮。我想禁用cancel按钮的初始焦点。我想从按钮中删除初始焦点的原因是,当批处理操作正在进行时,用户可能会意外地敲击键盘上的键并取消整个操作。如果用户想要取消操作,我希望他们按Tab键并手动设置焦点,或者用鼠标单击cancel按钮。

据我所知,没有简单的方法可以做到这一点。我可以在ProgressMonitorDialog上创建另一个按钮,该按钮不执行任何操作并将其作为焦点,但这是一个难看的解决方法。特别是因为按钮必须可见或焦点将转移到cancel按钮。我也试过覆盖创建cancel按钮并绕过shell.setDefaultButton()方法但没有运气的方法。

任何线索/建议?

1 个答案:

答案 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);
         }