问题描述
我有一个输入屏幕,用户可以在其中输入SWT Text控件。当用户输入内容时,我将处理文本并将其显示在单独的read_only结果文本控件中。结果文本的长度可能比输入文本长几个字符。
我想放置结果文本控件显示,以便它始终显示用户当前在输入控件中键入的行。
我可以使用ivTextInput.getCaretLineNumber()
获得输入的插入符行,但是没有相应的方法来设置插入符行号。
我可以使用ivTextResult.setSelection(ivTextInput.getCaretPosition())
设置插入符号在结果中的位置,但是我对输入文本进行的处理可能会将结果文本“推”到不滚动就不可见的位置。>
理想情况下,结果文本显示将与输入文本显示结合在一起,以便用户键入的内容/位置始终与结果文本对齐。
我尝试跟踪处理过程中添加的额外字符,但是用户可以在文本控件中的任何位置添加文本,这样导致的混乱是无法使用的,再加上SWT文本控件处理新行的方式会导致计算失败。
解决方法
Text
有一种setTopIndex
方法,用于设置控件顶部可见的行:
public void setTopIndex(int index)