//这个进度条是别人写的,呵呵
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的进度条(ProgressMonitorDialog)进行封装,使下载文件更方便调用. DownloadProgressBar 是单个文件下载类 MultiDownloadProgressBar 是多个文件下载类 Test开头的类是测试类 支持下载完毕后自动关闭流,...
5. **视图管理**:JFace的ViewPart类简化了工作台视图的实现,支持动态添加和移除视图。 这份【SWT/JFace实例开发】资源可能涵盖了以下内容: 1. **基础控件的使用**:如何创建和配置SWT和JFace的基本组件,如...
3. 对话框和首选项:JFace提供了一套标准对话框(如打开/保存文件对话框)和首选项页的实现,开发者可以方便地集成到应用中。 4. 表格和树的高级功能:JFace扩展了SWT的表格和树,增加了如分页、过滤、拖放等功能,...
- JFace的数据绑定:如何将数据模型与用户界面元素关联,实现数据自动同步。 - MVC模式的应用:理解如何在JFace中划分模型、视图和控制器,以及它们之间的交互。 - 视图和编辑器的创建:学习如何定义和实现自定义...
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篇(第6-18章)"可能包含了一系列的SWT和JFace开发实例,涵盖了从基础组件使用到复杂功能实现的各个层面。这些章节可能涉及: - 基础控件的创建和布局管理,如GridLayout、FormLayout等。 - ...
2. JFace数据绑定:讲解如何使用JFace的数据绑定框架将界面元素与数据模型关联,实现数据的自动更新。 3. 表格和树视图:演示如何使用SWT和JFace创建和管理复杂的表格和树形结构,包括排序、过滤和编辑功能。 4. ...
此外,JFace还提供了对话框(Dialogs)、表编辑器(Table Editors)和数据模型(Data Models)等功能,让开发者可以更加专注于业务逻辑的实现。 在"SWT,JFACE核心应用源代码,第二部分.rar"这个压缩包中,我们可以...
通过JFace的Dialog类和MessageDialog类,我们可以创建各种类型的对话框,如输入对话框、确认对话框和进度条对话框,从而增强用户反馈和交互性。 第14和15部分可能继续深化对JFace高级特性的理解,例如表单视图的...
3. **进度条和等待指示器**:在长时间运行的操作中显示进度,提升用户体验。 4. **错误和警告消息**:正确地向用户显示错误或警告信息,包括ErrorDialog和MessageBox的使用。 此外,25章可能还会涉及对话框的生命...
3. **使用命名内部类**: 可以通过内部类的形式来实现事件监听器,并通过构造函数传递需要使用的变量。 ```java class MyListener implements Listener { private String name; public MyListener(String name)...
总的来说,这个SWT和JFace简易浏览器示例展示了如何利用Eclipse提供的API来创建一个功能基本的Web浏览器,包括加载页面、监听地址变化、处理页面加载进度、显示状态信息以及管理工具栏和进度条。这个示例代码为...
本篇文章将重点介绍如何使用SWT和JFace中的ProgressBar组件,以及如何通过代码实现其不同模式和样式。 `ProgressBar` 是一个非常实用的控件,通常用于显示任务的进度或在执行长时间操作时提供反馈。在上述示例中,...
SWT 包含各种基本组件,如按钮、文本框、列表、表格、树形视图等,以及更复杂的功能,如对话框、进度条和拖放支持。在"swt_demo"中,可能包含了使用SWT实现的各种组件实例。 2. JFace: JFace 是构建在 SWT 之上的...
JFace还提供了对话框、树视图、表视图等高级组件的实现。 3. **入门SWT和JFace**:这部分会引导读者安装和配置Eclipse开发环境,然后介绍如何创建基本的SWT和JFace应用,包括启动Eclipse工作台、创建窗口、添加控件...
2. **高级控件**:除了基本的SWT控件外,JFace还提供了一些高级控件,如进度条、树状视图等,增强了应用程序的功能性。 3. **对话框**:JFace提供了一系列预定义的对话框模板,简化了常见的用户交互场景。 #### SWT...
通过Eclipse的SWT和JFace,我们可以创建窗口、按钮、文本框等元素,实现与用户的交互。 二、图形化生命游戏的实现 1. **窗口创建**:首先,我们需要使用JFrame或者Shell(取决于选择SWT还是JFace)创建主窗口。窗口...
- **布局管理**:支持各种布局管理器,如FillLayout、GridLayout、 MigLayout等,帮助开发者实现复杂的窗口布局。 3. JFace: JFace是建立在SWT之上的另一层抽象,提供了一些更高级的UI组件和数据绑定机制。SWT ...