最近在用SWT 開發一個Java桌面程序,不同以往用AWT/SWING寫的程序。AWT/SWING寫的程序個人覺得界面很難看,總是不喜歡,而且運行速度也不行。所以看到用SWT程序運行的界面時,給了我一個驚喜。真是看不到以前AWT/SWING寫的界面的影子了,真看不出來是Java程序。SWT程序是調用的系統的小窗口部件,并不是像AWT/SWING自己構造部件,所以SWT程序界面是和操作系統保持一致的。雖然SWT程序還不能像AWT/SWING程序一樣運行在任何平臺,但是現階段SWT程序已經可以不用修改運行在windows, linux等幾個主要的平臺上面了,基本實現了其跨平臺性。由於以上幾個特性,使我對Java GUI編程又有了新的熱情。
SWT寫界面非常簡單,所有的組件都有個統一的構造方法,new Composite(Composite, Style),它去掉了AWT/SWING中用add()方法在面板中添加組件的方式,換成了在定義組件時,用第一個參數說明該組件是屬於那個面板的,另外還有一個可以選擇的組件的樣式,通過不同的樣式,形成組件不同的形態。
下面是一個最簡單的SWT窗口程序
package com.chengsi.main;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class Test3 {
public static void main(String[] args) {
Display display = Display.getDefault();//相當于顯示器,用來顯示窗口的組件
Shell shell = new Shell(); //主窗口組件
shell.setSize(500, 375);
shell.setText("SWT Application");
shell.open();
shell.layout();
//開始消息循環,直到用戶關閉窗口
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
另外,SWT的事件處理與AWT/SWING的事件處理機制是一樣的,可以和AWT/SWING一樣的寫代碼,非常方便。比如在上面程序中加入一個按鈕響應事件,用來顯示一個對話框。
package com.chengsi.main;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class Test3 {
public static void main(String[] args) {
Display display = Display.getDefault(); //相當于顯示器,用來顯示窗口的組件
final Shell shell = new Shell();//主窗口組件 ,要在匿名內部類中使用,所以用final修飾
shell.setSize(500, 375);
shell.setText("SWT Application");
shell.setLayout(new RowLayout());//設置布局,相當于AWT/SWING中的FlowLayout
shell.open();
shell.layout();
Button btn = new Button(shell, SWT.PUSH);//在shell面板中加入一個普通按鈕
btn.setText("單擊我");
//加入選擇事件監聽
btn.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
//彈出一個對話框
MessageDialog.openInformation(shell, "對話框", "按鈕單擊事件"); }
});
btn.pack();//以適當的大小顯示
//開始消息循環,直到用戶關閉窗口
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
分享到:
相关推荐
SWT桌面程序开发实例图解教程 包括桌面程序开发所需的IDE工具
利用SWT技术,基于WindowBuilder Eclipse 插件开发 桌面应用小程序详细步骤
SWT,AWT/Swing外,java...做JAVA桌面窗口开发,我们有了更多的选择。此API是我自己生成的。对应的SWT版本是我网上下的最新的,版本是swt-3.4,里面没有API。网上也没找到最新版本的,我就自己尝试生成。呵呵。谢谢支持
大家都知道,swt开发出的程序一般都是用于桌面程序,现在使用这个包可以把swt开发出的程序用于web上。
非常好用的java swing拖拽插件,可以快速方便的开发Java桌面应用程序。
Java基于SWT开发桌面应用程序记事本,与桌面记事本一模一样,可实现基础的所有功能,内附源码,可执行文件,以及开发随笔手册,资源纯手工制作出来的。希望对大家有所帮助
SWT Designer, Java 桌面应用程序界面开发包
基于 Java 桌面程序开发的图形库主要有 3 种,它们分别是 AWT、Swing 和 SWT。用前 两种库编写的桌面程序不够美观而且执行效率低,响应速度慢,SWT 恰好克服了 AWT 和 Swing 的缺点,它丰富的组件可以使程序员开发出...
基于 Java 桌面程序开发的图形库主要有 3 种,它们分别是 AWT、Swing 和 SWT。用前 两种库编写的桌面程序不够美观而且执行效率低,响应速度慢,SWT 恰好克服了 AWT 和 Swing 的缺点,它丰富的组件可以使程序员开发出...
已实现简单的剪切/复制/粘贴功能(尚不能和外界程序交互) 2. 添加创建新文件夹功能 3. 添加选择全部/文件/文件夹功能 4. 增加对创建新文件夹,重命名,删除,粘贴操作的异常处理 5. FileUtil中增加...
传统的AWT开发技术的诸多弊端,促使了各种AWT替代技术的出现,而SWT便是这些技术中的优秀代表,文档详细讲解了基于SWT开发桌面程序中可能遇到的种种问题,其中SWT线程便是亮点之一,读后对于开发中遇到的问题,可以...
软件开发工具库,能够让您使用Java语言开发原生的Windows应用程序而不需要编写额外的JNI代码。使用SWT Win32 Extension,您将不需要创建原生的动态链接库来调用操作系统动态链接库的系统API或者方法。您仅仅需要做的...
Vaadin 是一种 Java Web 应用程序的开发框架, 其设计目标是便利地创建和维护高质量的 Web UI 应用程序....开发变得就象过去使用便利的Java开发工具(如AWT, Swing, SWT)来开发桌面应用程序一样, 甚至 更简单.
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
不过由于是SWT+JFace实现的桌面程序,想研究Java桌面程序应用的朋友也可以下载看看,其一些特性及设计思路还是比较有用的。 <br>详细资料及截图请参考压缩包中doc/how to run.doc文档 <br>新特性: 支持拽...
joywindow是的目标是用java语言与HTML显示来构建桌面应用程序.通过它,开发者可以用WEB开发的MVC模式构建桌面应用程序,可以有效提升开发速度. 本教程包含一个eclipse工程,一个可执行版,及一个word教程。本教程通过...
Ajax技术用于向Web客户端提供接近传统桌面应用程序的用户体验。 Echo应用程序可以使用面向组件和事件驱动的API完全在服务器端Java代码中创建,也可以完全用JavaScript编写为客户端应用程序。 为什么回声? 尽管Model...
swt 和 ve好像没中文补丁~~eclipse3.2的中文版我有... |------用于桌面应用程序开发: |------http://nchc.dl.sourceforge.net/sourceforge/easyeclipse/easyeclipse-desktop-java-1.3.1.1.exe(自带VE,可视化开发GUI)