我有关于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是可见的,并且用户键入了一些文本,这会导致可见客户端区中的变化,则监听器不会被告知有变化。
我的问题是--有没有可能以某种方式监听样式文本的可见工作区的变化?
发布于 2013-11-04 00:35:11
JFace TextViewer (使用StyledText)支持IViewportListener,它可以执行您想要的操作。
如果您不想使用JFace,那么您可以复制TextViewer调用其侦听器的方式。它监听控件调整大小、释放按键、按下按键、鼠标释放和选择小部件。然后,它检查StyledText.getTopPixel()是否已更改。
发布于 2013-11-04 00:16:41
您专门为getHorizontalBar()返回的对象添加了侦听器,这就是用户输入文本时没有发生任何事情的原因。也可以尝试将侦听器添加到getContent()。大致是这样的:
styledText.getContent().addTextChangeListener (new TextChangeListener() {
//events
};https://stackoverflow.com/questions/19754909
复制相似问题