2015-04-26 125 views
2

我想添加一個「取消」按鈕到這個彈出對話框,對話框基本上只是給用戶一些信息,並允許他們點擊是或查看詳細信息。問題是沒有取消按鈕,我想添加一個。如何將按鈕添加到JFace ErrorDialog

該對話框是JFace ErrorDialog,它使用預製MultiStatus來顯示錯誤消息。該對話框打開並顯示確定按鈕或取消按鈕。無論如何要直接操縱對話框如何創建按鈕或者我可以使用其他方法來改變它的外觀?任何幫助表示讚賞!

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

這是我試圖改變的對話框。這基本上是檢查,以確保有人按下確定,如果他們不那麼你退出。你可以通過點擊角落中的紅色X來退出它,但是如果有一個按鈕就不那麼容易混淆了。

+0

燦你向我們展示你的代碼來顯示對話框,因爲它目前還不清楚你正在使用哪個對話框。 –

+0

添加了我在說的代碼 – Inondle

回答

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); 
+0

謝謝!奇蹟般有效! – Inondle