借助this question,我能够弄清楚如何在SwT的Google play services - 12.8.74
小部件内显示链接。颜色正确,将光标悬停在链接上时,甚至光标也会改变形状。
到目前为止,效果很好,但实际上该链接不可点击。尽管光标会改变其形状,但是如果单击链接,则不会发生任何事情。因此,我问我如何才能单击链接以在浏览器中实际打开它。
我想到了使用StyledText
,将点击位置跟踪回到执行了点击的各个文本,然后决定是否打开链接。但是,鉴于已经存在一些相应地更改光标的例程,这似乎太复杂了。我相信有一些简单的方法可以做到这一点(并确保点击行为实际上与光标更改其形状时保持一致)。
有人有什么建议吗?
这是一个MWE,展示了我到目前为止所做的事情:
MouseListener
答案 0 :(得分:0)
好吧,我在发布此问题时有点太快了……有一个片段正好处理了这个问题,它表明,确实需要使用一个额外的MouseListener
才能使事情正常运行。
可以在here中找到该代码段,这是设置侦听器的相关部分:
styledText.addListener(SWT.MouseDown, event -> {
// It is up to the application to determine when and how a link should be activated.
// In this snippet links are activated on mouse down when the control key is held down
if ((event.stateMask & SWT.MOD1) != 0) {
int offset = styledText.getOffsetAtLocation(new Point (event.x, event.y));
if (offset != -1) {
StyleRange style1 = null;
try {
style1 = styledText.getStyleRangeAtOffset(offset);
} catch (IllegalArgumentException e) {
// no character under event.x, event.y
}
if (style1 != null && style1.underline && style1.underlineStyle == SWT.UNDERLINE_LINK) {
System.out.println("Click on a Link");
}
}
}
});