繁忙光标显示长时间运行的任务 : 光标 « 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 » 光标屏幕截图 
繁忙光标显示长时间运行的任务
繁忙光标显示长时间运行的任务


/*
 * BusyIndicator example snippet: display busy cursor during long running task
 *
 * For a list of all SWT example snippets see
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets
 */
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class Snippet130 {

  public static void main(String[] args) {
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new GridLayout());
    final Text text = new Text(shell, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL);
    text.setLayoutData(new GridData(GridData.FILL_BOTH));
    final int[] nextId = new int[1];
    Button b = new Button(shell, SWT.PUSH);
    b.setText("invoke long running job");
    b.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent e) {
        Runnable longJob = new Runnable() {
          boolean done = false;

          int id;

          public void run() {
            Thread thread = new Thread(new Runnable() {
              public void run() {
                id = nextId[0]++;
                display.syncExec(new Runnable() {
                  public void run() {
                    if (text.isDisposed())
                      return;
                    text
                        .append("\nStart long running task "
                            + id);
                  }
                });
                for (int i = 0; i < 100000; i++) {
                  if (display.isDisposed())
                    return;
                  System.out
                      .println("do task that takes a long time in a separate thread "
                          + id);
                }
                if (display.isDisposed())
                  return;
                display.syncExec(new Runnable() {
                  public void run() {
                    if (text.isDisposed())
                      return;
                    text
                        .append("\nCompleted long running task "
                            + id);
                  }
                });
                done = true;
                display.wake();
              }
            });
            thread.start();
            while (!done && !shell.isDisposed()) {
              if (!display.readAndDispatch())
                display.sleep();
            }
          }
        };
        BusyIndicator.showWhile(display, longJob);
      }
    });
    shell.setSize(250150);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}


           
       
Related examples in the same category
1. 光标:从一个图像文件创建一个彩色光标光标:从一个图像文件创建一个彩色光标
2. 光标:创建一个彩色光标源和衍射光标:创建一个彩色光标源和衍射
3. 光标:从来源和衍射创建一个光标光标:从来源和衍射创建一个光标
4. 光标:设置光标变成手光标:设置光标变成手
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.