【问题标题】:Add link to MessageDialog message添加指向 MessageDialog 消息的链接
【发布时间】:2015-06-05 02:50:24
【问题描述】:

我正在做 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);

URL 一直显示为字符串。是否可以显示为链接?

【问题讨论】:

  • No MessageDialog 不支持这个。您必须编写自己的对话框并使用 SWT Link 控件和侦听器来打开 URL。
  • 那真是太糟糕了。谢谢!

标签: java eclipse eclipse-plugin eclipse-rcp


【解决方案1】:

正如@greg-449 所说,MessageDialog不支持链接。如果您不介意这种骇人听闻的方法,您可以节省一些工作并像这样覆盖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 复制而来,只是将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;
  }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2020-08-15
    • 2013-01-28
    • 2020-12-11
    • 1970-01-01
    相关资源
    最近更新 更多