문제

I am currently using a StyledText widget to display some "excerpt" of the actual code, such as a method definition within a Java file.

My problem is that the line number shown in my StyledText always start with 1, which is different from the actual line number in the original file. For example, if the original source looks like:

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

then, when the foo() method is shown in my StyledText widget, I want to show the line numbers starting from 4, not 1.

Is there a way to achieve this? I read through the javadoc, but could not figure out a good way.

도움이 되었습니까?

해결책

Just change the LineStyleEvent.bulletIndex in the LineStyleListener:

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
    }
});

Looks like this:

enter image description here

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top