2013-12-18 184 views
0

我有一个SWT styledText区域与scrollBar。我想滚动条滚动到给定的索引,但我遇到一些困难。滚动SWT滚动条

我想:

ScrollBar vBarScroll = styledText.getVerticalBar(); 
vBarScroll.setSelection(textIndex); 
styledText.showSelection(); 

这将选择文字,我不想要的,以及有困难的显示。它也很多。

我尝试的另一件事是:

styledText.setTopIndex(textIndex); 

但是,这并不工作,要么

+0

滚动条的单位是像素而不是字符偏移量。 'setTopIndex'的单位是行。 –

回答

0

试试这个:

lineNoIndex是行的索引。 0→第一行1->第二行等

if(lineNoIndex >= 0 && lineNoIndex < styledText.getLineCount()) { 
     int offset = lineNoIndex == 0 ? 0:styledText.getOffsetAtLine(lineNoIndex) - 1; 
     styledText.setCaretOffset(offset); 
     styledText.setTopIndex(offset == 0 ? 0:lineNoIndex - 1); 
} 
+0

如何让styledText每次将setTopIndex重置为0? – Valkyrie

+0

不明白,每次调用.setText方法时都会添加一些更多解释 –

+0

,.setTopIndex方法会自动调用值0.我想知道如何防止发生这种情况,因为它会导致区域中的文本跳转并看起来很紧张 – Valkyrie