Chr*_*ton 3 java eclipse eclipse-plugin eclipse-rcp
我在做Eclipse插件开发.我正在上课MessageDialog.API可以在这里找到.
我想在消息中添加一个像我这样做的链接"here" MessageDialog.
这是我在做的事情:
String errorMessage = "You have received an error. Please visit " + URL_NEEDED_HERE
MessageDialog.openError(getShell(), "Get Existing Data Sources Error", errorMessage);
Run Code Online (Sandbox Code Playgroud)
URL一直显示为String.它可以显示为链接吗?
正如@ 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;
}
};
Run Code Online (Sandbox Code Playgroud)
代码是从代码复制而来的IconAndMessageDialog,只是替换了Label一个Link小部件.
或者你可以createCustomArea像这样覆盖:
@Override
protected Control createCustomArea( Composite parent ) {
Link link = new Link( parent, SWT.WRAP );
link.setText( "Please visit <a>this link</a>." );
return link;
}
Run Code Online (Sandbox Code Playgroud)
这是向a添加自定义控件的指定方法,MessageDialg但会导致稍微不同的布局:

| 归档时间: |
|
| 查看次数: |
1321 次 |
| 最近记录: |