⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 task.java

📁 SWTJFace篇项目源程序该项目包含 包含了Eclipse下构建swt的基本工程
💻 JAVA
字号:
package cn.com.chengang.swt.thread;

import org.eclipse.swt.widgets.Display;

public class Task {
	private TaskGUI taskGUI; // 得到前台界面的对象引用
	private boolean stopFlag; // 停止后台处理的标志

	public Task(TaskGUI taskGUI) {// 通过构造函数传入前台界面类的对象引用
		this.taskGUI = taskGUI;
	}

	public void stop() {// 停止后台处理
		stopFlag = true;
	}

	public void start(int taskCount) {// 开始后台处理
		stopFlag = false; // 修改停止标志
		log("后台线程开始执行任务......\n");
		for (int i = 0; i < taskCount; i++) {
			if (stopFlag)// 一旦发现标志被设为停止,则退出循环
				break;
			// 每隔0.1秒一次循环,用于模拟一个需时较长的任务
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				log(e.getMessage());
			}
			log("任务" + (i + 1) + "处理完毕\n");
			notifyOneTaskFinish(i);// 通知完成了一个任务
		}
		log("后台线程结束执行任务!!!!!!\n");
		notifyAllTasksFinish();// 通知已完成了所有任务
	}

	private void log(final String str) {
		Display.getDefault().syncExec(new Runnable() {
			public void run() {
				// 向前台界面的consoleText输出字符串
				taskGUI.consolePrintln(str);
			}
		});
	}

	private void notifyOneTaskFinish(final int progress) {
		Display.getDefault().syncExec(new Runnable() {
			public void run() {
				// 移动前台界面的进度条
				taskGUI.moveProgress(progress);
			}
		});
	}

	private void notifyAllTasksFinish() {
		Display.getDefault().syncExec(new Runnable() {
			public void run() {
				// 修改界面按钮状态,让执行按钮有效,停止按钮无效
				taskGUI.setButtonState(true);
			}
		});
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -