有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java SWT样式文本侦听客户端区域更改

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

我的问题是——是否有可能以某种方式监听样式文本的可视客户端区域上的更改


共 (2) 个答案

  1. # 1 楼答案

    JFace TextViewer(使用StyledText)支持一个IViewportListener函数,它可以实现您想要的功能

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

  2. # 2 楼答案

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

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