对于 RCP 文本编辑器,使用 Styledtext。
StyledText 背景图像和文本需要同时滚动。
如何检测自动滚动事件?如果存在。
例如:如果用户按下 END_KEY 并且插入符号所在的行长于 StyledText 控件区域的大小,则控件会自动滚动以显示插入符号的位置。如果用户按下 LEF_ARROW 并且光标位于行的开头并且前一行的长度大于控件大小,则会发生同样的情况。
因此,当检测到自动滚动时,侦听器可以相应地重绘背景。
最新找到的解决方案是为每个产生自动滚动的事件编写侦听器。即为以下内容编写事件:
st.addCaretListener(new CaretListener (){...}; st.addListener(SWT.Modify, new Listener() {...}; ... st.addKeyListener(){...}; st.addMouseListener( ){...};
所以在每个事件里面写代码来绘制背景图像。当控件滚动时通知侦听器,代码应该更有效。
提前致谢