JFace进度条
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(500,?375);
????????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(true,?true,?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(500,?375);
????????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(true,?true,?runnable);
????????shell.open();
????????shell.layout();
????????while?(!shell.isDisposed())?{
????????????if?(!display.readAndDispatch())
????????????????display.sleep();
????????}
????}
}
3,rcp中后臺任務的進度條
使用Job建立后臺任務,只需要設置job.setUser(true)進度條就出現了,和上邊一樣,進度條需要自己來控制進度。如果做一個cool的進度條,就看你如何讓進度條顯示出實際的任務進程。 posted on 2007-09-10 13:41 浙林龍哥 閱讀(...) 評論(...) 編輯 收藏
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(500,?375);
????????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(true,?true,?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(500,?375);
????????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(true,?true,?runnable);
????????shell.open();
????????shell.layout();
????????while?(!shell.isDisposed())?{
????????????if?(!display.readAndDispatch())
????????????????display.sleep();
????????}
????}
}
3,rcp中后臺任務的進度條
使用Job建立后臺任務,只需要設置job.setUser(true)進度條就出現了,和上邊一樣,進度條需要自己來控制進度。如果做一個cool的進度條,就看你如何讓進度條顯示出實際的任務進程。 posted on 2007-09-10 13:41 浙林龍哥 閱讀(...) 評論(...) 編輯 收藏
轉載于:https://www.cnblogs.com/huqingyu/archive/2007/09/10/888410.html
總結
- 上一篇: 无敌的广告
- 下一篇: 一步一步SharePoint 2007之