添加MessageDialog消息的链接

我在做Eclipse插件开发。 我正在使用MessageDialog类。 API可以在这里找到。

我想在MessageDialog的消息中添加一个像我在“here”中所做的链接。

这是我在做的事情:

 String errorMessage = "You have received an error. Please visit " + URL_NEEDED_HERE MessageDialog.openError(getShell(), "Get Existing Data Sources Error", errorMessage); 

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 this link." ); 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 this link." ); return link; } 

这是将自定义控件添加到MessageDialg的指定方法,但会导致稍微不同的布局:

带有链接的MessageDialog