`
tyl
  • 浏览: 50803 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

JFace实现进度条

阅读更多

//这个进度条是别人写的,呵呵

 

import java.awt.Point;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Shell;

public class ORProgressBar {
 /**
  * Logger for this class
  */

 public boolean  isDispose = false;
 private Shell  shell  = null;
 private Display  display  = null;
 private String  message  = "";
 private String  title  = "";
 private ProgressBar pbar  = null;
 private Object  obj   = null;

 /**
  * 通用Eclipse平台进度条
  * @param pObj 调用类实例
  * @param ptitle 进度条标题
  * @param pmsg 进度条显示信息
  */
 public ORProgressBar(Object pObj, String ptitle, String pmsg) {
  obj = pObj;
  message = pmsg;
  title = ptitle;
  init();
 }

 private void init() {
  try {
   display = new Display();
  } catch (Exception e) {
   try {
    display = Display.getDefault();
   } catch (Exception e1) {
    display = Display.getCurrent();
   }
  }
  shell = new Shell(display);
  shell.setSize(335, 100);
  Point p = UtilApi.getMsgboxLocate();
  shell.setLocation(p.x, p.y);
  pbar = new ProgressBar(shell, SWT.INDETERMINATE);
  pbar.setBounds(10, 30, 300, 20);
  shell.setText(title);
  Label label = new Label(shell, SWT.NULL);
  label.setText(this.message);
  label.setAlignment(SWT.CENTER);
  label.setBounds(10, 10, 300, 20);
  shell.setEnabled(false);
 }

 /**
  * doProcess:调用实例类progress方法
  * @param @return 设定文件
  * @return boolean 对象类型
  * @throws
  * @since CodingExample Ver 1.1
  */
 private boolean doProcess() {
  try {
   Class cls = obj.getClass();
   //通过反射机制调用传入类中声明的方法。
   Method mth = cls.getDeclaredMethod("progress", null);
   mth.invoke(obj, null);
  } catch (SecurityException e) {
   e.printStackTrace();
  } catch (IllegalArgumentException e) {
   e.printStackTrace();
  } catch (NoSuchMethodException e) {

   e.printStackTrace();
  } catch (IllegalAccessException e) {
   e.printStackTrace();
  } catch (InvocationTargetException e) {
   e.printStackTrace();
  }
  return true;
 }

 public void run() {
  shell.open();
  if (display == null)
   display = Display.getDefault();
  if (display != null && !display.isDisposed()) {
   Thread t1 = new Thread() {
    public void run() {
     isDispose = doProcess();
    }
   };
   t1.start();
   System.out.println("111");
   display.syncExec(new Runnable() {
    public void run() {
     while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
       if (!isDispose) {
        try {
         shell.forceActive();
         display.getThread().sleep(100);
        } catch (InterruptedException e) {
         e.printStackTrace();
        }
       } else {
        display.dispose();
       }
      }
     }
    }
   });
  }
 }

 public static void main(String[] args) {
  ORProgressBar t = new ORProgressBar(null, "", "");
  ORProgressBar bar = new ORProgressBar(t, "进度", "正在...,请稍候...");
  bar.run();
 }

 /**
  * progress:实例对象中运行内容(必须存在)
  * @param 设定文件
  * @return void 对象类型
  * @throws
  * @since CodingExample Ver 1.1
  */
 public void progress() {
  System.out.println("Progress()----------");
  try {
   Thread.sleep(4000);
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
 }

}

分享到:
评论

相关推荐

    SWT/Jface文件下载进度条 组件封装代码

    对SWT/Jface的进度条(ProgressMonitorDialog)进行封装,使下载文件更方便调用. DownloadProgressBar 是单个文件下载类 MultiDownloadProgressBar 是多个文件下载类 Test开头的类是测试类 支持下载完毕后自动关闭流,...

    swt/jface实例开发

    5. **视图管理**:JFace的ViewPart类简化了工作台视图的实现,支持动态添加和移除视图。 这份【SWT/JFace实例开发】资源可能涵盖了以下内容: 1. **基础控件的使用**:如何创建和配置SWT和JFace的基本组件,如...

    SWT&jface;开发jar包很全的

    3. 对话框和首选项:JFace提供了一套标准对话框(如打开/保存文件对话框)和首选项页的实现,开发者可以方便地集成到应用中。 4. 表格和树的高级功能:JFace扩展了SWT的表格和树,增加了如分页、过滤、拖放等功能,...

    SWT_JFace.rar_swt/jface

    - JFace的数据绑定:如何将数据模型与用户界面元素关联,实现数据自动同步。 - MVC模式的应用:理解如何在JFace中划分模型、视图和控制器,以及它们之间的交互。 - 视图和编辑器的创建:学习如何定义和实现自定义...

    Eclipse_Swt_Jface_核心应用_部分19

    8.2.3 实现接口的类 131 8.2.4 继承的类的方法 132 8.3 键盘事件 132 8.3.1 键盘事件程序示例 132 8.3.2 键盘事件的各种属性 134 8.4 鼠标事件 136 8.4.1 鼠标事件程序示例 136 8.4.2 鼠标事件的各种...

    SWT和JFace开发实例

    "第二篇 SWT_JFace篇(第6-18章)"可能包含了一系列的SWT和JFace开发实例,涵盖了从基础组件使用到复杂功能实现的各个层面。这些章节可能涉及: - 基础控件的创建和布局管理,如GridLayout、FormLayout等。 - ...

    SWT.rar_SWT_jface教程

    2. JFace数据绑定:讲解如何使用JFace的数据绑定框架将界面元素与数据模型关联,实现数据的自动更新。 3. 表格和树视图:演示如何使用SWT和JFace创建和管理复杂的表格和树形结构,包括排序、过滤和编辑功能。 4. ...

    SWT,JFACE核心应用源代码,第二部分.rar

    此外,JFace还提供了对话框(Dialogs)、表编辑器(Table Editors)和数据模型(Data Models)等功能,让开发者可以更加专注于业务逻辑的实现。 在"SWT,JFACE核心应用源代码,第二部分.rar"这个压缩包中,我们可以...

    Eclipse_Swt_Jface_核心应用_part10--15_of_19

    通过JFace的Dialog类和MessageDialog类,我们可以创建各种类型的对话框,如输入对话框、确认对话框和进度条对话框,从而增强用户反馈和交互性。 第14和15部分可能继续深化对JFace高级特性的理解,例如表单视图的...

    Eclipse Swt/Jface核心应用 (23-25章_end)

    3. **进度条和等待指示器**:在长时间运行的操作中显示进度,提升用户体验。 4. **错误和警告消息**:正确地向用户显示错误或警告信息,包括ErrorDialog和MessageBox的使用。 此外,25章可能还会涉及对话框的生命...

    JFace_SWT.doc

    3. **使用命名内部类**: 可以通过内部类的形式来实现事件监听器,并通过构造函数传递需要使用的变量。 ```java class MyListener implements Listener { private String name; public MyListener(String name)...

    SWT(JFace) 简易浏览器 制作实现代码第1/2页

    总的来说,这个SWT和JFace简易浏览器示例展示了如何利用Eclipse提供的API来创建一个功能基本的Web浏览器,包括加载页面、监听地址变化、处理页面加载进度、显示状态信息以及管理工具栏和进度条。这个示例代码为...

    SWT(JFace)体验之ProgressBar

    本篇文章将重点介绍如何使用SWT和JFace中的ProgressBar组件,以及如何通过代码实现其不同模式和样式。 `ProgressBar` 是一个非常实用的控件,通常用于显示任务的进度或在执行长时间操作时提供反馈。在上述示例中,...

    多个SWT例子

    SWT 包含各种基本组件,如按钮、文本框、列表、表格、树形视图等,以及更复杂的功能,如对话框、进度条和拖放支持。在"swt_demo"中,可能包含了使用SWT实现的各种组件实例。 2. JFace: JFace 是构建在 SWT 之上的...

    SwtJfaceInAction

    JFace还提供了对话框、树视图、表视图等高级组件的实现。 3. **入门SWT和JFace**:这部分会引导读者安装和配置Eclipse开发环境,然后介绍如何创建基本的SWT和JFace应用,包括启动Eclipse工作台、创建窗口、添加控件...

    如何创建简单的SWT 应用程序.pdf清晰版

    2. **高级控件**:除了基本的SWT控件外,JFace还提供了一些高级控件,如进度条、树状视图等,增强了应用程序的功能性。 3. **对话框**:JFace提供了一系列预定义的对话框模板,简化了常见的用户交互场景。 #### SWT...

    Game of life.zip_eclipse GUI_图形化_生命游戏

    通过Eclipse的SWT和JFace,我们可以创建窗口、按钮、文本框等元素,实现与用户的交互。 二、图形化生命游戏的实现 1. **窗口创建**:首先,我们需要使用JFrame或者Shell(取决于选择SWT还是JFace)创建主窗口。窗口...

    swt designer

    - **布局管理**:支持各种布局管理器,如FillLayout、GridLayout、 MigLayout等,帮助开发者实现复杂的窗口布局。 3. JFace: JFace是建立在SWT之上的另一层抽象,提供了一些更高级的UI组件和数据绑定机制。SWT ...

Global site tag (gtag.js) - Google Analytics