`

SWT下一個簡單的倒計時窗口

    博客分类:
  • SWT
阅读更多
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class CountDownShell implements Runnable{
	private static final int CountDownTime = 30;	//倒計時,30秒

	protected Shell shell;
	private Thread clocker;
	private Label countLabel;

	
	public static void main(String[] args) {
		try {
			CountDownShell window = new CountDownShell();
			window.open();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

	public void open() {
		Display display = Display.getDefault();
		createContents();
		centerShell(display, shell);	//讓窗口居中顯示
		shell.open();
		shell.layout();
		clocker = new Thread(this);
		clocker.start();
		
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
	}


	protected void createContents() {
		shell = new Shell(SWT.NONE | SWT.APPLICATION_MODAL);
		shell.setLayout(new GridLayout());
		shell.setSize(228, 104);
		shell.setText("SWT Dialog");

		Composite panel = new Composite(shell, SWT.NONE);
		panel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true));
		final GridLayout gridLayout = new GridLayout();
		gridLayout.numColumns = 3;
		panel.setLayout(gridLayout);
		
		final Label label = new Label(panel, SWT.NONE);
		label.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, true));
		label.setText("倒計時:");

		countLabel = new Label(panel, SWT.NONE);
		countLabel.setText("30");

		final Label label_2 = new Label(panel, SWT.NONE);
		label_2.setText("秒");
		
		
	}

	public void run() {
		int i = CountDownTime;	//設置倒計時時間
		
		while(i > 0) {
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			
			i--;
			final int temp = i;
			
			//在其他線程中調用UI線程(即修改界面元素),需要使用Display.getDefault().asyncExec()方法
			Display.getDefault().asyncExec(new Runnable() {
				public void run() {
					countLabel.setText(temp + "");
				}
			});
		}
		
		Display.getDefault().asyncExec(new Runnable() {
			public void run() {
				//倒計時完成,退出窗口。
				shell.dispose();
			}
		});
	}
	
	//居中顯示shell
	private void centerShell(Display display, Shell shell) {
		Rectangle displayBounds = display.getPrimaryMonitor().getBounds();
		Rectangle shellBounds =shell.getBounds();
		int x = displayBounds.x + (displayBounds.width - shellBounds.width)>>1;
		int y = displayBounds.y + (displayBounds.height - shellBounds.height)>>1;
		shell.setLocation(x, y);
	}

}

 

分享到:
评论

相关推荐

    java的swing实现计时与倒计时

    对于“java的swing实现计时与倒计时”这一主题,我们将探讨如何利用Swing构建一个能够输入起始时间和终止时间,并且可以执行计时和倒计时功能的应用程序。 首先,Swing中的JFrame是应用程序的主要窗口,它包含其他...

    使Excel嵌入到SWT窗口中

    在本例中,我们使用SWT来创建一个窗口,并将Excel嵌入到该窗口中。SWT的使用可以大大简化GUI的开发和实现。 知识点三:OLE技术的使用 OLE(Object Linking and Embedding)是一种允许不同的应用程序之间交互和共享...

    SWT 基本 窗口 组件

    java SWT 基本窗口 组件 开发

    SWT创建Shell窗口

    本篇将详细讲解如何使用SWT来创建一个基本的Shell窗口。 首先,我们需要理解Shell在SWT中的含义。Shell是SWT中的顶级窗口,类似于其他GUI库中的Frame或Window。它是应用程序的主窗口,可以包含各种控件,如按钮、...

    swt 窗口设计演示

    详细描述了SWT组件的实际应用 详细在说明书

    javaSWT简易计算器

    本项目“javaSWT简易计算器”利用SWT来构建一个基本的计算器应用,能够执行基本的数学运算,包括加、减、乘、除以及处理小数。下面我们将深入探讨SWT库、计算器的设计和实现,以及如何在Java中处理数学运算。 1. **...

    SWT/JFACE客户端登录窗口例子

    在这个“SWT/JFACE 客户端登录窗口例子”中,我们可以预期会看到如何使用这两个库来创建一个基本的登录窗口。通常,这样的窗口会包含用户名和密码输入框,以及登录、取消等按钮。以下是一些可能涉及的知识点: 1. *...

    swt的简单代码

    以下是一个使用SWT创建简单窗口的代码片段: ```java import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; ...

    SWT.rar_SWT tutorial_java swt_swt 登陆窗口_swt tutori_swt-designer

    "SWT designer"是一个强大的可视化设计工具,它允许开发者通过拖放的方式创建和编辑SWT界面,大大简化了GUI开发过程。在SWT Designer中,你可以直观地调整组件的位置、大小,设置事件监听,无需编写大量的布局代码,...

    SWT JFace 按键、事件、监听

    `VerifyEvent`是SWT中的另一个类,用于处理文本控件中的文本更改事件。此类同样包含了多个属性,如`character`、`keyCode`、`stateMask`、`doit`、`start`、`end`和`text`等。下面我们通过几个示例来具体说明: - *...

    SWT的简单实例

    下面,我们将进一步探讨如何使用这些组件构建一个简单的SWT应用: 1. **初始化SHELL**: 创建一个新的SHELL实例,设置其标题,并通过`setLayout`方法设置布局管理器。布局管理器决定了窗口内组件的排列方式,SWT提供...

    swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位

    SWT的设计目标是提供一个与平台相关的、高效的GUI库,它通过直接调用操作系统API来实现,而不是像Java Swing那样依赖Java抽象窗口工具包(AWT)和Java 2D。这种设计使得SWT应用程序在性能上通常优于Swing,并且可以...

    java swt 窗口靠边自动隐藏

    1. **Shell**:SWT中的Shell对象代表一个顶级窗口,类似于其他GUI库中的Window或Frame。它是所有控件的容器,且具有窗口的基本属性,如标题、大小、位置等。 2. **Listeners**:SWT提供了多种监听器,如...

    SWT隐藏任务栏图标

    在SWT中,窗口(Shell)是应用程序的基本容器,它在任务栏上显示为一个图标。默认情况下,Shell会自动创建并显示任务栏图标。要实现隐藏任务栏图标的功能,我们需要深入理解SWT的内部机制,并可能需要对源码进行一定...

    SWT 弹出对话框 可以选择的图标种类

    在SWT中,`MessageBox`是一个用于显示简单的消息对话框的类,通常用来向用户显示警告、确认信息或者获取用户的基本响应。这个对话框可以根据需要设置不同的图标和按钮。 在描述中提到的例子中,`MessageBox`被创建...

    java SWT简单小工具

    本项目名为"java SWT简单小工具",显然是一个使用SWT库开发的简易应用程序示例。 在描述中,"java SWT简单小工具"被重复提及,这可能表明该项目专注于展示如何使用SWT库来构建简单的GUI(图形用户界面)应用。由于...

    swt教程 有关SWT怎么应用

    这个例子创建了一个简单的窗口,包含两个按钮。`Display`类代表一个窗口系统,`Shell`类表示窗口本身,而`GridLayout`用于布局管理。`Button`类则用于创建按钮,`SWT.PUSH`是按钮类型。 SWT提供了一系列丰富的组件...

    SWT配置 SWT配置 SWT配置 SWT配置 SWT配置

    为了验证SWT配置是否正确,可以通过编写一个简单的Shell程序来进行测试。以下是一个基本的Shell创建示例: ```java import org.eclipse.swt.widgets.*; public class SimpleShell { public SimpleShell() { ...

    SWT自定义圆形按钮

    SWT原生按钮不够美观,本案例实现自定义圆形按钮,代码可直接下载使用。

    用SWT写的简单的通讯录

    标题中的“用SWT写的简单的通讯录”表明这是一个使用SWT(Standard Widget Toolkit)开发的简单通讯录应用程序。SWT是IBM开发的一个开源GUI库,它为Java开发者提供了与操作系统原生界面集成的能力,使得创建的Java...

Global site tag (gtag.js) - Google Analytics