Java SWT StyledText-倾听客户区域的变化

Java SWT StyledText-倾听客户区域的变化,java,swt,eclipse-rcp,Java,Swt,Eclipse Rcp,我对SWT样式的文本滚动条有问题。我已将侦听器添加到样式文本的(水平和垂直)滚动条中: styledText.getHorizontalBar().addListener (SWT.Selection, new Listener () { public void handleEvent (Event e) { //Some action } }); styledText.getVerticalBar().addListener (SWT.Selection, ne

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

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只有一部分是可见的,并且用户在某些文本中键入,这会导致可见客户端区域发生更改,则侦听器不会被告知更改


我的问题是-是否可能以某种方式侦听样式文本的可见客户端区域上的更改?

您正在向getHorizontalBar()返回的对象专门添加侦听器,这就是为什么用户输入文本时不会发生任何事。还可以尝试将侦听器添加到getContent()中。大致如下:

styledText.getContent().addTextChangeListener (new TextChangeListener() {
            //events
        };

JFace
TextViewer
(使用
StyledText
)支持执行所需操作的
IViewportListener


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

我对可见内容的移动感兴趣。例如,若用户不键入可打印字符,而是按箭头,那个么您的方法将不起作用—所以当插入符号移动到样式文本的不可见部分时。但我很高兴听到其他想法:)顺便说一下,我知道我可以听插入符号位置的变化,但我想听滚动条位置的变化。