由於@ greg-449表示,MessageDialog
不支持鏈接。如果你不介意的hackish的方法,你可以節省一些工作,並覆蓋createMessageArea
像這樣:
@Override
protected Control createMessageArea(Composite composite) {
Image image = getImage();
if(image != null) {
imageLabel = new Label(composite, SWT.NULL);
image.setBackground(imageLabel.getBackground());
imageLabel.setImage(image);
GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.BEGINNING).applyTo(imageLabel);
}
if(message != null) {
Link link = new Link(composite, getMessageLabelStyle());
link.setText("This is a longer nonsense message to show that the link widget wraps text if specified so. Please visit <a>this link</a>.");
GridDataFactory.fillDefaults()
.align(SWT.FILL, SWT.BEGINNING)
.grab(true, false)
.hint(convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH), SWT.DEFAULT)
.applyTo(link);
}
return composite;
}
};
的代碼被複制的形式IconAndMessageDialog
,只是用Link
部件替換Label
。
或者您可以覆蓋createCustomArea
像這樣:
@Override
protected Control createCustomArea(Composite parent) {
Link link = new Link(parent, SWT.WRAP);
link.setText("Please visit <a>this link</a>.");
return link;
}
這是指定的方式添加自定義控件到MessageDialg
但導致稍微不同的佈局:
沒有MessageDialog做不支持這一點。你必須寫你自己的對話框,並使用SWT'Link'控件和一個監聽器打開URL。 – 2015-03-31 16:59:04
那麼這是一個無賴。謝謝! – 2015-03-31 17:02:17