Widget、Display简介---SWT笔记(1)

最近在看SWT相关的基础知识,先记个笔记。

一、Widget类

  • Widget 是SWT中所有 窗口组件的抽象基类。
    SWT应用程序中,窗口组件是用户与程序交互的接口,是信息的载体,将程序数据数据呈现在图形化窗口中。

  • 窗口组件,自身也包含一定的状态,在不同状态下,自身显示也不同。

  • 窗口组件用于监听用户事件,会根据鼠标键盘事件,改变其状态。

  • SWT使用平台窗口组件,因此当创建一个SWT widget 的对象时,与操作系统相关的组件将会被创建。当这些SWT对象被销毁时,相应的平台组件也会被释放。

  1. 创建Widget类
    <1>Widget类是抽象类,不能被实例化,大部分SWT窗口组件类都继承widget类。
    <2>Widget类构造函数: Widget(Widget parent,int style)
    创建窗口组件对象,需要传入 parent,创建一个widget对象需要传递一个父Widget对象,该父亲窗口组件对孩子组件的生命周期具有一定的控制,当父组件消亡时,其他孩子组件也消亡。
    <3>组件行为和外观由style决定
    样式参数可以是单个值,也可是多个样式的组合。
    SWT.SINGLE参数 创建组件中不能同时选中多个元素
    SWT.MULTI 可以同时选中多个元素

  2. 释放Widget
    窗口组件在创建时,会从操作系统获得相应的平台组建资源(需要及时释放资源),SWT设计中,SWT程序直接管理这些资源,Widget类中提供dispose()方法,用于释放与组件相关的资源。
    1> 主动创建它,主动释放
    当程序中使用new创建了一个组件对象,就该调用dispose()方法释放它。
    2>释放组件时,其孩子组件也会被释放
    只需要调用parent的dispose()方法,它孩子组件也会被释放。

二、Display类

1.Display包含与窗口组件相似的概念,比如生命周期、事件及其监听等,但它并不是Widget的子类, Display类没有对应的窗口形式,它是用于在SWT与窗口平台之间建立桥梁。

2.Display类将SWT程序中相应的代码转换为操作系统平台的窗口调用,Display类一个重要功能:维护一组事件监听器,当事件发生时(鼠标事件、键盘事件、选择事件等),Display会从操作系统获得事件队列,并根据事件类型触发相应事件监听器。
任何SWT程序必须拥有一个Display类的实例,没有事件时,通过调用sleep()方法让用户界面释放CPU资源。

boolean readAndDispatch() 从系统的事件队列中读取事件,一次一件,触发相应的监听器。如果事件队列包含事件,返回true,否则false
Boolean sleep() 允许用户界面暂时释放CPU资源

3.当程序结束时,必须调用Display的dispose()方法来释放资源.

public class ButtonPra {
	public static void main(String[] args) {
		Display display = new Display();
		Shell shell = new Shell(display);
		
		shell.setLayout(new GridLayout(2, true));

		// create two push button
		new org.eclipse.swt.widgets.Button(shell, SWT.PUSH).setText("Push 1");
		new org.eclipse.swt.widgets.Button(shell, SWT.PUSH).setText("Push 2");
		
		// // create two checkbox
		new org.eclipse.swt.widgets.Button(shell, SWT.CHECK).setText("checkBox one");
		new org.eclipse.swt.widgets.Button(shell, SWT.CHECK).setText("checkBox two");

		shell.pack();
		shell.open();
		
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
				// 如果队列中没有事件,调用sleep()方法让用户界面释放CPU资源
			}
		}
		display.dispose();
	}

}

运行代码如下:
Widget、Display简介---SWT笔记(1)_第1张图片

你可能感兴趣的:(SWT基础笔记)