多行注释 : 文字 « SWT-JFace-Eclipse « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » SWT-JFace-Eclipse » 文字屏幕截图 
多行注释

//Send questions, comments, bug reports, etc. to the authors:

//Rob Warner (rwarner@interspatial.com)
//Robert Harris (rbrt_harris@yahoo.com)

import org.eclipse.swt.*;
import org.eclipse.swt.custom.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

import java.util.LinkedList;
import java.util.ArrayList;

import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;

/**
 * This program demonstrates multiline comments. It uses MultiLineCommentListener
 * to do the syntax coloring
 */
public class MultiLineComment {
  /**
   * Runs the application
   */
  public void run() {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Multiline Comments");
    createContents(shell);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }

  /**
   * Creates the main window contents
   
   @param shell the main window
   */
  private void createContents(Shell shell) {
    shell.setLayout(new FillLayout());
    final StyledText styledText = new StyledText(shell, SWT.BORDER | SWT.H_SCROLL
        | SWT.V_SCROLL);

    // Add the line style listener
    final MultiLineCommentListener lineStyleListener = new MultiLineCommentListener();
    styledText.addLineStyleListener(lineStyleListener);

    // Add the modification listener
    styledText.addExtendedModifyListener(new ExtendedModifyListener() {
      public void modifyText(ExtendedModifyEvent event) {
        // Recalculate the comments
        lineStyleListener.refreshMultilineComments(styledText.getText());

        // Redraw the text
        styledText.redraw();
      }
    });
  }

  /**
   * The application entry point
   
   @param args the command line arguments
   */
  public static void main(String[] args) {
    new MultiLineComment().run();
  }
}
//Send questions, comments, bug reports, etc. to the authors:

//Rob Warner (rwarner@interspatial.com)
//Robert Harris (rbrt_harris@yahoo.com)
/**
 * This class supports multiline comments. It turns comments green.
 */
class MultiLineCommentListener implements LineStyleListener {
  // Markers for multiline comments
  private static final String COMMENT_START = "/*";
  private static final String COMMENT_END = "*/";

  // Color for comments
  private static final Color COMMENT_COLOR = Display.getCurrent().getSystemColor(
      SWT.COLOR_DARK_GREEN);

  // Offsets for all multiline comments
  List commentOffsets;

  /**
   * MultilineCommentListener constructor
   */
  public MultiLineCommentListener() {
    commentOffsets = new LinkedList();
  }

  /**
   * Refreshes the offsets for all multiline comments in the parent StyledText.
   * The parent StyledText should call this whenever its text is modified. Note
   * that this code doesn't ignore comment markers inside strings.
   
   @param text the text from the StyledText
   */
  public void refreshMultilineComments(String text) {
    // Clear any stored offsets
    commentOffsets.clear();

    // Go through all the instances of COMMENT_START
    for (int pos = text.indexOf(COMMENT_START); pos > -1; pos = text.indexOf(
        COMMENT_START, pos)) {
      // offsets[0] holds the COMMENT_START offset
      // and COMMENT_END holds the ending offset
      int[] offsets = new int[2];
      offsets[0= pos;

      // Find the corresponding end comment.
      pos = text.indexOf(COMMENT_END, pos);

      // If no corresponding end comment, use the end of the text
      offsets[1= pos == -? text.length() : pos + COMMENT_END.length() 1;
      pos = offsets[1];

      // Add the offsets to the collection
      commentOffsets.add(offsets);
    }
  }

  /**
   * Called by StyledText to get the styles for a line
   
   @param event the event
   */
  public void lineGetStyle(LineStyleEvent event) {
    // Create a collection to hold the StyleRanges
    List styles = new ArrayList();

    // Store the length for convenience
    int length = event.lineText.length();

    for (int i = 0, n = commentOffsets.size(); i < n; i++) {
      int[] offsets = (int[]) commentOffsets.get(i);

      // If starting offset is past current line--quit
      if (offsets[0> event.lineOffset + lengthbreak;

      // Check if we're inside a multiline comment
      if (offsets[0<= event.lineOffset + length
          && offsets[1>= event.lineOffset) {
        // Calculate starting offset for StyleRange
        int start = Math.max(offsets[0], event.lineOffset);

        // Calculate length for style range
        int len = Math.min(offsets[1], event.lineOffset + length- start + 1;

        // Add the style range
        styles.add(new StyleRange(start, len, COMMENT_COLOR, null));
      }
    }

    // Copy all the ranges into the event
    event.styles = (StyleRange[]) styles.toArray(new StyleRange[0]);
  }
}



           
       
Related examples in the same category
1. 文字大写
2. 文本事件文本事件
3. 示范文本和标签示范文本和标签
4. 折线折线
5. 备注文本备注文本
6. 显示文本字段显示文本字段
7. 显示红色字符,使用LineStyleListener显示红色字符,使用LineStyleListener
8. TextField的范例5TextField的范例5
9. TextField的范例4
10. TextField的范例3TextField的范例3
11. TextField的范例2TextField的范例2
12. TextField的范例TextField的范例
13. SWT XML编辑:修改DOMSWT XML编辑:修改DOM
14. 在Shell窗口绘制国际化的文字风格在Shell窗口绘制国际化的文字风格
15. 发现当用户滚动文字事件发现当用户滚动文字事件
16. 验证输入(日期格式)验证输入(日期格式)
17. 验证输入(只允许数字)验证输入(只允许数字)
18. 选择(启动,停止)选择(启动,停止)
19. 文字控件范例:设置选择(工字钢)文字控件范例:设置选择(工字钢)
20. 选择所有文本控件中的文字选择所有文本控件中的文字
21. 调整文字控制(显示约10个字符)调整文字控制(显示约10个字符)
22. 提示密码(设置回声字符)提示密码(设置回声字符)
23. 停止回车的默认按钮停止回车的默认按钮
24. 添加一个菜单项,选择所有的控制添加一个菜单项,选择所有的控制
25. 在文本框控件或组合控件检测CR(默认选择)在文本框控件或组合控件检测CR(默认选择)
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.