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实现计时与倒计时”这一主题,我们将探讨如何利用Swing构建一个能够输入起始时间和终止时间,并且可以执行计时和倒计时功能的应用程序。 首先,Swing中的JFrame是应用程序的主要窗口,它包含其他...
在本例中,我们使用SWT来创建一个窗口,并将Excel嵌入到该窗口中。SWT的使用可以大大简化GUI的开发和实现。 知识点三:OLE技术的使用 OLE(Object Linking and Embedding)是一种允许不同的应用程序之间交互和共享...
java SWT 基本窗口 组件 开发
本篇将详细讲解如何使用SWT来创建一个基本的Shell窗口。 首先,我们需要理解Shell在SWT中的含义。Shell是SWT中的顶级窗口,类似于其他GUI库中的Frame或Window。它是应用程序的主窗口,可以包含各种控件,如按钮、...
详细描述了SWT组件的实际应用 详细在说明书
本项目“javaSWT简易计算器”利用SWT来构建一个基本的计算器应用,能够执行基本的数学运算,包括加、减、乘、除以及处理小数。下面我们将深入探讨SWT库、计算器的设计和实现,以及如何在Java中处理数学运算。 1. **...
在这个“SWT/JFACE 客户端登录窗口例子”中,我们可以预期会看到如何使用这两个库来创建一个基本的登录窗口。通常,这样的窗口会包含用户名和密码输入框,以及登录、取消等按钮。以下是一些可能涉及的知识点: 1. *...
以下是一个使用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 designer"是一个强大的可视化设计工具,它允许开发者通过拖放的方式创建和编辑SWT界面,大大简化了GUI开发过程。在SWT Designer中,你可以直观地调整组件的位置、大小,设置事件监听,无需编写大量的布局代码,...
`VerifyEvent`是SWT中的另一个类,用于处理文本控件中的文本更改事件。此类同样包含了多个属性,如`character`、`keyCode`、`stateMask`、`doit`、`start`、`end`和`text`等。下面我们通过几个示例来具体说明: - *...
下面,我们将进一步探讨如何使用这些组件构建一个简单的SWT应用: 1. **初始化SHELL**: 创建一个新的SHELL实例,设置其标题,并通过`setLayout`方法设置布局管理器。布局管理器决定了窗口内组件的排列方式,SWT提供...
SWT的设计目标是提供一个与平台相关的、高效的GUI库,它通过直接调用操作系统API来实现,而不是像Java Swing那样依赖Java抽象窗口工具包(AWT)和Java 2D。这种设计使得SWT应用程序在性能上通常优于Swing,并且可以...
1. **Shell**:SWT中的Shell对象代表一个顶级窗口,类似于其他GUI库中的Window或Frame。它是所有控件的容器,且具有窗口的基本属性,如标题、大小、位置等。 2. **Listeners**:SWT提供了多种监听器,如...
在SWT中,窗口(Shell)是应用程序的基本容器,它在任务栏上显示为一个图标。默认情况下,Shell会自动创建并显示任务栏图标。要实现隐藏任务栏图标的功能,我们需要深入理解SWT的内部机制,并可能需要对源码进行一定...
本项目名为"java SWT简单小工具",显然是一个使用SWT库开发的简易应用程序示例。 在描述中,"java SWT简单小工具"被重复提及,这可能表明该项目专注于展示如何使用SWT库来构建简单的GUI(图形用户界面)应用。由于...
这个例子创建了一个简单的窗口,包含两个按钮。`Display`类代表一个窗口系统,`Shell`类表示窗口本身,而`GridLayout`用于布局管理。`Button`类则用于创建按钮,`SWT.PUSH`是按钮类型。 SWT提供了一系列丰富的组件...
为了验证SWT配置是否正确,可以通过编写一个简单的Shell程序来进行测试。以下是一个基本的Shell创建示例: ```java import org.eclipse.swt.widgets.*; public class SimpleShell { public SimpleShell() { ...
SWT原生按钮不够美观,本案例实现自定义圆形按钮,代码可直接下载使用。
标题中的“用SWT写的简单的通讯录”表明这是一个使用SWT(Standard Widget Toolkit)开发的简单通讯录应用程序。SWT是IBM开发的一个开源GUI库,它为Java开发者提供了与操作系统原生界面集成的能力,使得创建的Java...
以下是一个简单的SWT程序示例,创建了一个带有文本框的窗口: ```java package edu.ch4; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Text; import org....