经常有人抱怨java的awt,swing窗口太难看,和系统的很不协调,那么就用SWT吧,这个是eclipse基金会为了将eclipse实现的更人性化而开发的一组基于操作系统原生窗口的API。和wx,gtk,qt等图形用户界面库开发比较类似,开发流程等都可以举一反三。
下面一个Helloworld的例子:
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionAdapter;
import javax.swing.JOptionPane;
public class hello {
public static void main(String []s){
//Display是与系统线程打交道用的,与操作系统图形库交互
Display dis=new Display();
//GridLayout 有两个构造函数,一个是空的,还一个是
//GridLayout(int colsNum,boolean makeColumnsEqualWidth)
//用过swing的人都知道GridLayout是按列算的,行只是随之变化
//的,所以第一个参数指明有几列。第二个参数指明是否没列都等宽
GridLayout gl=new GridLayout(3,false);
//shell表示一个窗口基础模板,相当于swing中的Container,
//窗口指定上级模板是Display就表示要作为顶级窗口来显示.
Shell shell=new Shell(dis);
shell.setText("Helloworld Example!");
shell.setSize(200, 300);
//给shell加上布局管理器
shell.setLayout(gl);
for(int i=0;i<5;i++){
//作为基于操作系统原生界面的GUI库类(如wx,gtk,qt等)而言,一般都是在定义
//一个对象(组件,控制器等等)的时候,直接指定他所要放上去
//的父模板,下面的代码表示这个Button对象放到窗口对象shell
//上,另外,和swing另一个不同点是他在定义的时候指定类型,而不是像swing中
//再定义一个新的类别,比如下面的SWT.RADIO在swing中对应JRadioButton。
Button button=new Button(shell,SWT.RADIO);
button.setText("button"+i);
button.setSize(new Point(20,20));
button.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
//内部类来处理事件,很常见的一种手法。另外还可以在外部写一个类继承
//一个Adapter类或者实现Listener接口两种方式,我故意用swing的
//JOptionPane对比一下,基于操作系统的原生窗口和JVM生成窗口对比
JOptionPane.showMessageDialog(null,((Button)e.getSource()).getText());
}
});
}
//从下面开始又是和swing完全不同的了,shell.open()将shell打开监听所有事件。
//一直等到用户关闭程序再dis.dispose()回收垃圾。
shell.open();
while (!shell.isDisposed()) {
if (!dis.readAndDispatch())
dis.sleep();
}
dis.dispose();
}
}
结果如下:
很显然,原生窗口看的更自然一些,当然,swing更亮些
分享到:
相关推荐
SWT examples,SWT官方例子:http://www.eclipse.org/swt/examples.php 该页面所要下载的例子 其中,swt的例子在\plugins\org.eclipse.swt.examples.source_3.7.0.v3740f.jar中
编写的java桌面程序,通过SWT的GUI组件做的记事本
java的一套GUI库,eclipse就是用...这套例子是swt官网上的小型例子,每个文件介绍一个简单的功能。 官方网址 http://www.eclipse.org/swt/snippets/ 需要的界面效果可以再官方网址上找到说明,再查看对应的java文件即可
里面有多个SWT和JFACE的例子,包括Table,Tree,List等等,真心不错的!
swt创建tree的例子 swt创建tree的例子 swt创建tree的例子
SWT并发例子(后台耗时线程)前台点击按钮,后台执行一个耗时操作。
org.eclipse.swt.widgets.Tree 一颗树的加载和展示,完整的一个工程
SWT 各种小示例集中,确对最全,涵盖了SWT中各基础控件和jface的控件使用
Button,Label,Text,Combo,List,Menu,Composite,Group,TabItem,FillLayout,SWT监听事件的使用等等例子!
Eclipse+SWTJFace开发实战精解,SWT例子,Eclipse开发入门与项目实践+源代码
swt中treeview和tableview实例,有助于理解这两个控件的使用。另外附带html页面。。可读性更强。
前台为SWT界面,后台线程通过hibernate实现数据库操作
http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fsamples%2Forg.eclipse.swt.examples%2Fdoc-html%2Fswt_manual_setup.html 如果上述地址打不开,可以参考以下具体操作步骤 ...
完整的用SWT树例子源码,有注释,实现联动。结构清晰,适合新手使用。
SWT 无疑是迄今写图形化界面最好的工具了,这个是在eclipse工具下写的SWT例子,希望和大家一起进步,项目中如果要使用SWT的可以学习一下 :>
SWT的简单实例,涉及到了BUTTON,TEXT,COMBE,SHELL等组件,对于初步学习 SWT是个很好的例子。
基于SWT和eclipse的开发越来越多,于是GUI的测试也越发显得重要,SWVBOT工具就是为了方便GUI的测试而出的新一个测试工具。。。 提供资源共大家学习
本人辛苦下载的eclipse官方网站上的swt例子,本来使用rcp项目里的,现在rcp项目做完了,和大家共享一下。
SWT/Jface 开发入门指南 介绍以下方面的内容: ? 设定 swt 以及 JFace 的开发环境 ? swt 的一些简单部件(widget)介绍 ? JFace 的一些入门性介绍 ... 通过一些简单的例子说明如何利用 swt 和 JFace 编写图形化应用程序
本资源深入浅出,以实际开发为向导,并附有全部原代码,本人觉得是初学者的 经典参考资料