package com.yc.ui;
import java.util.Date;
public class Da {
protected Shell shell;
/**
* Launch the application.
* @param args
*/
public static void main(String[] args) {
try {
Da window = new Da();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Open the window.
*/
public void open() {
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
/**
* Create contents of the window.
*/
protected void createContents() {
shell = new Shell();
shell.setSize(450, 300);
shell.setText("SWT Application");
Button button = new Button(shell, SWT.NONE);
button.addDisposeListener(new DisposeListener() {
//关闭窗口
public void widgetDisposed(DisposeEvent arg0) {
System.exit(0);
}
});
button.setBounds(106, 104, 80, 27);
button.setText("New Button");
final Label label = new Label(shell, SWT.NONE);
label.setBounds(106, 169, 236, 65);
label.setText("New Label");
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Show s=new Show(label);
Thread t=new Thread(s);
t.start();
}
});
}
}
class Show implements Runnable{
private Label label;
public Show(Label label){
this.label=label;
}
@Override
public void run() {
Display display=label.getDisplay().getDefault();
while(true){
//调用label的syncExec方法
display.syncExec(new Runnable(){
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
label.setText(new Date()+"");
}
});
}
}
}
分享到:
相关推荐
本主题将深入探讨如何利用SWT(Standard Widget Toolkit)和Java来构建一个局域网内的聊天应用,并解决其中涉及的多线程问题。SWT是Eclipse基金会提供的一个开源GUI库,它为Java开发者提供了与操作系统更紧密集成的...
接下来我们来看一个具体的示例,展示如何在实际开发中应用上述两种策略来解决SWT线程冲突问题。 ```java public class SWTMainWin { private Shell shell; private int returnCode = SWT.CANCEL; public ...
首先,源码部分允许开发者深入理解SWT的工作原理,探究其内部结构,这对于进行定制化开发或者解决特定问题时非常有用。通过查看源代码,我们可以学习到如何利用SWT创建窗口、控件、布局管理等,以及如何处理事件和...
它是Eclipse项目的一部分,提供了与操作系统更紧密集成的功能,比如原生对话框、控件和多线程支持。标题提到的是SWT的4.3版本,提供了适用于64位和32位操作系统的jar包。 在Java中,JVM(Java虚拟机)根据安装的...
不同于MFC使用窗口查找表的技术可能会导致线程间消息传递的问题,SWT的设计更加健壮,能够更好地处理多线程环境下的消息。SWT利用了JNI的特性,确保即使在多线程环境中也能正确地处理消息。 #### 四、与其他框架的...
这个项目是一个典型的Java GUI应用程序示例,结合了SWT库的使用,多线程编程,以及与操作系统的交互,为用户提供了一种方便的定时关机解决方案。通过研究其源代码,开发者可以学习到如何构建类似的应用,并深入了解...
4. **社区支持**:相对于AWT和Swing,SWT的社区支持稍弱,这意味着在遇到问题时可能难以找到解决方案。 ### SWT入门 #### HelloWorld示例解析 以下是对SWT HelloWorld示例的详细解析: ```java import org....
解决这个问题的方法是找到对应操作系统的 DLL 文件并将其放到系统路径中,或者将 DLL 文件与你的应用程序一起打包。在Eclipse中,你可以通过以下步骤配置: 1. 右键点击项目 -> Build Path -> Configure Build Path...
SWT解决了AWT和Swing框架中的问题,使用JNI访问本地窗口组件(native widgets),并且可以模拟不能获取的窗口组件。SWT应用程序的基础材料包括Display、Shell和Widgets。 1. 为什么要使用SWT? SWT是IBM开发的一套...
在多线程环境中,每个线程可以拥有自己的`Display`实例,而`Display.getCurrent()`方法可帮助获取当前活跃的`Display`实例。 - `Shell`:代表操作系统窗口,分为顶层`Shell`和对话`Shell`两种。前者作为`Display`的...
通过本文的介绍,我们可以了解到SWT作为一种高效的跨平台GUI开发框架,不仅解决了早期Java GUI框架存在的问题,而且为开发者提供了强大的工具和支持,帮助他们在多种平台上构建高质量的应用程序。
`SWT线程.pdf`文件可能是详细讲解SWT中线程管理的教程,可以帮助读者深入理解如何在SWT应用中正确处理多线程。 总的来说,SWT是一个强大且灵活的GUI库,对于希望开发高性能、原生感的Java桌面应用的开发者来说,是...
综上所述,本毕业设计涵盖了Java多线程编程的核心原理和实践,线程安全策略,HTTP协议的高级应用,以及解决实际问题的断点续传技术。通过这个项目,学生将能深入理解这些技术,并能够设计出具有实用价值的软件系统。
7. 性能优化:大文件或大量文件的同步需要考虑性能优化,比如使用多线程处理以提高效率。 8. 定时任务:程序可能包含一个定时器功能,允许用户设定定期自动同步,以保持数据的实时一致性。 9. 日志记录:为了追踪...
9. **示例代码**:教程中应包含丰富的代码示例,帮助读者更好地理解和应用SWT技术,解决实际问题。 10. **下载说明**:可能包含获取SWT库的途径,安装和配置环境的步骤,以及如何获取和使用教程中的资源文件。 11....
SWT通过以下几个步骤解决了这一问题: 1. **消息监听与分发**: - SWT定义了一系列事件监听器接口,例如`SelectionListener`,这些接口定义了方法用于响应特定类型的消息。 - 当创建一个控件时,可以通过注册监听...
10. **问题解决**:可能还包括常见问题解答(FAQ)和一些调试技巧,帮助开发者解决在实际开发中遇到的问题。 通过阅读和查阅这个SWT 3.7的帮助文档,开发者不仅可以掌握如何使用这个版本的SWT,还能了解到如何设计...
在Java编程语言中,SWT(Standard Widget Toolkit)、AWT(Abstract Window Toolkit)和Swing是用于构建图形用户界面(GUI)...同时,对源码的探索也有助于开发者深入理解Java GUI编程的底层原理,提高解决问题的能力。
经过调查与咨询,作者了解到在使用 SWT 和 JGroups 进行通信时需要处理好线程同步问题,可以通过调用 `Display.syncExec(Runnable r)` 方法来解决这个问题。 #### 二、SWT 简介及在本项目中的应用 **SWT (Standard...