【问题标题】:Java SWT StyledText, changing the starting line numberJava SWT StyledText,改变起始行号
【发布时间】:2013-09-01 01:48:43
【问题描述】:

我目前正在使用 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,但找不到一个好方法。

【问题讨论】:

    标签: java swt styledtext


    【解决方案1】:

    只需更改LineStyleListener 中的LineStyleEvent.bulletIndex

    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-06-08
      • 2013-11-14
      • 1970-01-01
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 2011-05-29
      • 1970-01-01
      相关资源
      最近更新 更多