2

我遇到了 SWT StyledText 滚动条的问题。我已将侦听器添加到样式文本的(水平和垂直)滚动条:

styledText.getHorizontalBar().addListener (SWT.Selection, new Listener () {
    public void handleEvent (Event e) {
        //Some action
    }
});
styledText.getVerticalBar().addListener (SWT.Selection, new Listener () {
    public void handleEvent (Event e) {
        //Some action
    }
});

我的问题是,我添加的侦听器仅在用户使用鼠标移动滚动条时才会做出反应。例如,如果 styledText 的一部分是可见的,并且用户键入了一些文本,这会导致可见客户区域发生变化,那么侦听器不会被通知更改。

我的问题是 - 是否有可能以某种方式听取样式文本可见客户区域的变化?

4

2 回答 2

4

JFace TextViewer(使用StyledText)支持IViewportListener执行您想要的操作。

如果您不想使用 JFace,那么您可以复制TextViewer调用其侦听器的方式。它监听控件调整大小、按键释放、按键按下、鼠标向上和小部件选择。然后它检查是否StyledText.getTopPixel()已更改。

于 2013-11-03T16:35:10.873 回答
1

您正在专门为 getHorizo​​ntalBar() 返回的对象添加侦听器,这就是用户输入文本时没有发生任何事情的原因。尝试向 getContent() 添加一个侦听器。类似于以下内容:

styledText.getContent().addTextChangeListener (new TextChangeListener() {
            //events
        };
于 2013-11-03T16:16:40.627 回答