Java 可以将HTML样式链接添加到SWT StyledText吗?

Java 可以将HTML样式链接添加到SWT StyledText吗?,java,swt,jface,Java,Swt,Jface,我知道SWT有一个链接类来创建HTML a href样式的链接作为小部件,但我并没有试图找到一种方法来让StyledText控件中的某些文本显示并作为链接使用 如果按住control键并将鼠标悬停在方法名称上,我觉得Eclipse会在其代码编辑器中执行此操作,但我知道Eclipse java编辑器比StyledText控件复杂得多。您需要向StyledText小部件添加LineStyleListener: textField.addLineStyleListener (...); ... p

我知道SWT有一个链接类来创建HTML a href样式的链接作为小部件,但我并没有试图找到一种方法来让StyledText控件中的某些文本显示并作为链接使用


如果按住control键并将鼠标悬停在方法名称上,我觉得Eclipse会在其代码编辑器中执行此操作,但我知道Eclipse java编辑器比StyledText控件复杂得多。

您需要向StyledText小部件添加LineStyleListener:

textField.addLineStyleListener (...);

...

public void lineGetStyle (LineStyleEvent e)
{
  // alloc a set of styles for the requested line
  e.styles = new StyleRange [...];

  for (int i = 0; i < e.styles.length; i++)
  {
    StyleRange styleRange = new StyleRange ();

    styleRange.start = ...;
    styleRange.length = ...;
    styleRange.underline = true;
    styleRange.foreground = <URL colour>;

    e.styles [i] = styleRange;
  }
}
textField.addLineStyleListener(…);
...
公共无效lineGetStyle(LineStyleEvent e)
{
//为请求的行分配一组样式
e、 样式=新样式范围[…];
for(int i=0;i
javadoc for LineStyleListener将为您提供更多信息


要添加点击行为,您需要一些更多的逻辑:我还可以粘贴一些代码,用于在StyledText小部件中自动添加HTML样式的可点击链接URL(如果有帮助)。

自JFace 3.5以来,链接有一种特殊的样式:

styleRange.underlineStyle = SWT.UNDERLINE_LINK;
styleRange.data = "http://www.google.com/";

这使得识别链接变得更加简单,您可以将URL存储在样式中。至于自动查找链接,只需在您获得的行中查找模式
http://[^]
(链接中不允许空白),然后添加样式。

谢谢!我很想看看您用来自动添加链接的代码,但这很有帮助。如果有人无意中发现了这一点,并想知道如何使链接可点击:。还要注意,还必须设置
styleRange.underline=true