0

我目前正在使用一个StyledText小部件来显示实际代码的一些“摘录”,例如 Java 文件中的方法定义。

我的问题是我显示的行号StyledText总是以1开头,这与原始文件中的实际行号不同。例如,如果原始来源如下所示:

1:  package something;
2:  
3:  public class MyClass {
4:      public void foo() {
5:          // Do something...
6:      }
7:  }

然后,当该foo()方法显示在我的StyledText小部件中时,我想显示从 4 开始的行号,而不是 1。

有没有办法做到这一点?我通读了javadoc,但找不到一个好方法。

4

1 回答 1

0

只需更改LineStyleEvent.bulletIndexLineStyleListener

final StyledText text = new StyledText(shell, SWT.NONE);

text.setText("lalala\n\nlalala\n\nlalala\n\nlalala\n\nlalala\n\nlalala\n\n");
text.addLineStyleListener(new LineStyleListener()
{
    @Override
    public void lineGetStyle(LineStyleEvent e)
    {
        // Set the line number
        e.bulletIndex = text.getLineAtOffset(e.lineOffset);

        // Set the style, 12 pixles wide for each digit
        StyleRange style = new StyleRange();
        style.metrics = new GlyphMetrics(0, 0, Integer.toString(text.getLineCount() + 1).length() * 12);

        // Create and set the bullet
        e.bullet = new Bullet(ST.BULLET_NUMBER, style);

        // Apply the offset
        e.bulletIndex += YOUR_OFFSET; // I used 3 here
    }
});

看起来像这样:

在此处输入图像描述

于 2013-08-28T21:15:26.593 回答