Swt/Jface进度条

简介:

Swt/Jface进度条

处理长时间的任务的时候常需要进度条显示,有几种实现方式
1,普通的进度条
import  java.lang.reflect.InvocationTargetException;

import  org.eclipse.core.runtime.IProgressMonitor;
import  org.eclipse.jface.dialogs.ProgressMonitorDialog;
import  org.eclipse.jface.operation.IRunnableWithProgress;
import  org.eclipse.swt.widgets.Display;
import  org.eclipse.swt.widgets.Shell;


public   class  TestProgress  {
    
static boolean stopflg = false;
    
/**
     * Launch the application
     * 
@param args
     
*/

    
public static void main(String[] args) throws Exception{
        
final Display display = Display.getDefault();
        
final Shell shell = new Shell();
        shell.setSize(
500375);
        shell.setText(
"SWT Application");
        
        
//
        IRunnableWithProgress runnable = new IRunnableWithProgress(){
            
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
                monitor.beginTask(
"generate"30);
                
for(int i=0;i<100;i++){
                    
if(monitor.isCanceled()){
                        
return;
                    }

                    monitor.worked(
1);
                    Thread.sleep(
50);
                }

                
                monitor.done();
            }

        }
;
        
new ProgressMonitorDialog(shell).run(truetrue, runnable);
        shell.open();
        shell.layout();
        
while (!shell.isDisposed()) {
            
if (!display.readAndDispatch())
                display.sleep();
        }

    }


}

2,反复循环的进度条
import  java.lang.reflect.InvocationTargetException;

import  org.eclipse.core.runtime.IProgressMonitor;
import  org.eclipse.jface.dialogs.ProgressMonitorDialog;
import  org.eclipse.jface.operation.IRunnableWithProgress;
import  org.eclipse.swt.widgets.Display;
import  org.eclipse.swt.widgets.Shell;


public   class  TestProgress  {
    
static boolean stopflg = false;
    
/**
     * Launch the application
     * 
@param args
     
*/

    
public static void main(String[] args) throws Exception{
        
final Display display = Display.getDefault();
        
final Shell shell = new Shell();
        shell.setSize(
500375);
        shell.setText(
"SWT Application");
        
        
//
        IRunnableWithProgress runnable = new IRunnableWithProgress(){
            
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
                monitor.beginTask(
"generate"30);
                
int i=0;
                
while(true){
                    
if(stopflg){
                        
break;
                    }

                    i
++;
                    
if(i==30){
                        i
=0;
                        monitor.beginTask(
"generate"30);
                    }

                    monitor.worked(
1);
                    Thread.sleep(
100);
                }

                monitor.done();
            }

        }
;
        
new ProgressMonitorDialog(shell).run(truetrue, runnable);
        shell.open();
        shell.layout();
        
while (!shell.isDisposed()) {
            
if (!display.readAndDispatch())
                display.sleep();
        }

    }


}

3,rcp中后台任务的进度条

使用Job建立后台任务,只需要设置job.setUser(true)进度条就出现了,和上边一样,进度条需要自己来控制进度。如果做一个cool的进度条,就看你如何让进度条显示出实际的任务进程。

本文转自kenty博客园博客,原文链接http://www.cnblogs.com/kentyshang/archive/2007/08/16/858303.html如需转载请自行联系原作者


kenty

相关文章
|
3月前
|
JavaScript 前端开发
如何在Map中获取元素的数量?
如何在Map中获取元素的数量?
216 1
|
弹性计算
阿里云ECS配置内网穿透服务器
阿里云ECS配置内网穿透服务器 包含FRP zerotier
|
11月前
|
SQL 存储 关系型数据库
达梦数据库字段类型 varchar 转 text
本文介绍了在达梦数据库中将字段类型从 `varchar` 转换为 `text` 的两种方法:一是通过 DM数据迁移工具导出表结构和数据,修改后重新导入;二是通过添加临时字段、转移数据、删除原字段并重命名临时字段的方式实现转换。针对不同数据量的表,提供了灵活的解决方案。
|
11月前
|
XML Java Maven
WebService客户端调用的5种常见方式
本文介绍了在Java中创建和调用WebService的方法,包括服务端的搭建、配置类的添加以及客户端的多种调用方式(如使用JDK原生代码、wsimport命令、动态调用、代理工厂及HttpClient)。文中详细展示了每种方法的实现步骤和示例代码,强调了服务端与客户端参数实体类字段的兼容性,并推荐使用代理工厂方式进行调用。
2514 0
WebService客户端调用的5种常见方式
|
自然语言处理 IDE 测试技术
通义灵码史上最全使用教程:秀一秀AI编程新肌肉
通义灵码是阿里云推出的一款智能编码辅助工具,基于通义大模型,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等功能。它支持 Visual Studio Code 和 JetBrains IDEs,适配多 IDE 原生设计,帮助开发者高效、流畅地编码。官方提供了详细的下载和安装指南,以及丰富的功能介绍和使用指南。
3436 4
|
11月前
|
NoSQL 编译器 C语言
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。高级技巧包括内存检查、性能分析和符号调试。通过实践案例学习如何有效定位和解决问题,同时注意保持耐心、合理利用工具、记录过程并避免过度调试,以提高编程能力和开发效率。
316 1
|
存储 JSON NoSQL
【文档数据库】ES和MongoDB的对比
【文档数据库】ES和MongoDB的对比
1048 1
|
Linux Windows
Postman 汉化 中文版
Postman中文版最新为9.12.2,2022-02-06更新。要安装汉化版,请遵循以下步骤:下载对应平台的Postman(官方或历史版本),然后根据Windows、Mac或Linux的指示安装中文包。在Windows中,找到安装路径解压缩并替换app.zip;Mac在应用程序目录替换app文件夹;Linux下载app.zip并解压到安装目录。记得禁用自动更新,可修改hosts文件或删除Windows的update.exe。不使用联网工作区可启用Scratch Pad模式。
1725 6
|
消息中间件 存储 负载均衡
ActiveMQ持久订阅设置
ActiveMQ持久订阅设置
213 0