如何将按钮添加到JFace ErrorDialog

时间:2015-04-26 07:54:44

标签: java eclipse-plugin jface

我正在尝试向此弹出对话框添加“取消”按钮,该对话框基本上只是为用户提供了一些信息,并允许他们点击“是”或查看详细信息。问题是没有取消按钮,我想添加一个。

该对话框是JFace ErrorDialog,它使用预制MultiStatus来显示错误消息。对话框打开,并显示“确定”按钮或“取消”按钮。反正有没有直接操作对话框创建按钮的方式或我可以用来改变它的外观的其他方法?任何帮助表示赞赏!

if (ErrorDialog.openError(shell, 
    Messages.ConsistencyAction_confirm_dialog_title, null,
    multiStatus, IStatus.WARNING) != Window.OK) {
    return;
}

这是我正在尝试更改的对话框。这基本上是检查以确保有人按下确定,如果他们没有,那么你退出。你可以通过点击角落里的红色X来退出它,但是按钮就不那么容易混淆了。

1 个答案:

答案 0 :(得分:4)

您可以扩展ErrorDialog类,以便覆盖createButtonsForButtonBar方法。

例如,这是来自Eclipse p2安装插件:

public class OkCancelErrorDialog extends ErrorDialog {

    public OkCancelErrorDialog(Shell parentShell, String dialogTitle, String message, IStatus status, int displayMask) {
        super(parentShell, dialogTitle, message, status, displayMask);
    }

    @Override
    protected void createButtonsForButtonBar(Composite parent) {
        // create OK, Cancel and Details buttons
        createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
        createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, true);
        createDetailsButton(parent);
    }
}

使用此方法,您无法使用静态ErrorDialog.openError方法,而是必须执行以下操作:

OkCancelErrorDialog dialog = new OkCancelErrorDialog(shell, Messages.ConsistencyAction_confirm_dialog_title, null, multiStatus, IStatus.WARNING);