添加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
的指定方法,但会导致稍微不同的布局: