【发布时间】:2018-08-07 20:25:30
【问题描述】:
在 this question 的帮助下,我能够弄清楚如何在 SwT 中的 StyledText 小部件中显示链接。颜色是正确的,当鼠标悬停在链接上时,甚至光标也会改变形状。
到目前为止一切顺利,但该链接实际上不可点击。虽然光标改变了它的形状,但如果点击链接,什么都不会发生。因此,我在问如何单击链接以在浏览器中实际打开它。
我曾想过使用MouseListener,将点击位置跟踪回执行点击的相应文本,然后决定是否打开链接。然而,这似乎太复杂了,因为已经有一些程序可以相应地更改光标。我相信有一些简单的方法可以做到这一点(并确保点击行为实际上与光标改变其形状时一致)。
有人有什么建议吗?
这是一个 MWE,展示了我到目前为止所做的事情:
public static void main(String[] args) throws MalformedURLException {
final URL testURL = new URL("https://stackoverflow.com/questions/1494337/can-html-style-links-be-added-to-swt-styledtext");
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, true));
StyledText sTextWidget = new StyledText(shell, SWT.READ_ONLY);
final String firstPart = "Some text before ";
String msg = firstPart + testURL.toString() + " some text after";
sTextWidget.setText(msg);
sTextWidget.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
StyleRange linkStyleRange = new StyleRange(firstPart.length(), testURL.toString().length(), null, null);
linkStyleRange.underline = true;
linkStyleRange.underlineStyle = SWT.UNDERLINE_LINK;
linkStyleRange.data = testURL.toString();
sTextWidget.setStyleRange(linkStyleRange);
shell.open();
while(!shell.isDisposed()) {
display.readAndDispatch();
}
}
【问题讨论】: