Java:StyledText显示行号

来自WHY42
imported>Soleverlee2015年4月23日 (四) 02:51的版本 (以“给Swt的StyledText组件增加行号显示,[http://stackoverflow.com/questions/11057442/java-swt-show-line-numbers-for-styledtext 参考这里] <source lang="java...”为内容创建页面)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

给Swt的StyledText组件增加行号显示,参考这里

text.addLineStyleListener(new LineStyleListener() {
            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);
            }
        });
 text.addModifyListener(new ModifyListener() {
            public void modifyText(ModifyEvent event) {
                int maxLine = text.getLineCount();
                int lineCountWidth = Math.max(String.valueOf(maxLine).length(), 3);

                StyleRange style = new StyleRange();
                style.background = Display.getDefault().getSystemColor(SWT.COLOR_GRAY);
                style.metrics = new GlyphMetrics(0, 0, lineCountWidth * 8 + 5);
                Bullet bullet = new Bullet(ST.BULLET_NUMBER, style);
                text.setLineBullet(0, text.getLineCount(), null);
                text.setLineBullet(0, text.getLineCount(), bullet);
            }
        });