删除createButtonsForButtonBar或使其有用 - JFace Dialogs

时间:2013-12-04 11:51:48

标签: java user-interface swt jface

因此,每次制作对话框时,您或WindowMaker都会覆盖createButtonsForButtonBar

默认情况下,这会为您提供“确定”和“取消”按钮。

问题:
如果我可以向这些按钮添加自定义动作就没问题,但到目前为止我只发现了有限的方法。例如,如果我向OK按钮添加任何调用,它将抛出异常,widgetdisposed

我使用的解决方法:
到目前为止,我设法缩小了对话框,并将Override部分保持为空 这使得底部有一些空的空间,但没有什么烦人的 但这只是一个丑陋的解决方法我必须开始制作较小的对话框,而这不是一个选项。

我尝试了什么:

  • 我尝试将按钮直接添加到代码中,然后将其插入parent的{​​{1}}。结果:按钮不会显示。
  • 我尝试修改默认按钮,即使createButtonsForButtonBar错误也无效。

问题:
如何使JFace对话框按钮有用?

2 个答案:

答案 0 :(得分:4)

通常不会覆盖createButtonsForButtonBar,默认情况通常很好,除非你想添加更多按钮或停止确定或取消正在创建。

如果您想在按下确定后执行某些操作,请覆盖okPressed(),对于取消覆盖cancelPressed(),在这两种情况下都应在覆盖中调用super方法。

答案 1 :(得分:0)

我设法使用该方法,没有处理任何对象。你必须先打电话

super.createButtonsForButtonBar(parent);

此外,okPressed方法必须被覆盖并清空:

@Override
protected void okPressed() {
}

然后你可以通过以下方式获得按钮:

Button cancel = getButton(IDialogConstants.CANCEL_ID);

Button ok = getButton(IDialogConstants.OK_ID);

现在您可以添加自己的selectionListener