SWT的小例子

        经常有人抱怨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更亮些

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值