我遇到了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的一部分可见,并且某些文本中的用户类型导致可见的客户区域发生更改,则不会通知侦听器更改。
我的问题是-是否可以以某种方式听取样式文本的可见客户区域中的更改?
最佳答案
JFace TextViewer
(使用StyledText
)支持IViewportListener
,它可以满足您的需求。
如果您不想使用JFace,则可以复制TextViewer
调用其侦听器的方式。它侦听控件的大小,释放键,按下的键,鼠标向上和选定的小部件。然后,它检查StyledText.getTopPixel()
是否已更改。