SWT:将可点击的链接集成到StyledText中

时间:2018-08-07 20:25:31

标签: hyperlink swt

借助this question,我能够弄清楚如何在SwT的Google play services - 12.8.74小部件内显示链接。颜色正确,将光标悬停在链接上时,甚至光标也会改变形状。

到目前为止,效果很好,但实际上该链接不可点击。尽管光标会改变其形状,但是如果单击链接,则不会发生任何事情。因此,我问我如何才能单击链接以在浏览器中实际打开它。

我想到了使用StyledText,将点击位置跟踪回到执行了点击的各个文本,然后决定是否打开链接。但是,鉴于已经存在一些相应地更改光标的例程,这似乎太复杂了。我相信有一些简单的方法可以做到这一点(并确保点击行为实际上与光标更改其形状时保持一致)。

有人有什么建议吗?

这是一个MWE,展示了我到目前为止所做的事情:

MouseListener

1 个答案:

答案 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");
            }
        }
    }
});