SWT编程基础-控件和图形资源
2016-05-03 11:10
295 查看
控件
在SWT中,所有的控件都是从org.eclipse.swt.widgets.Control继承而来,如图所示:
最上层的Widget类直接继承自Object,是SWT中所有和窗口相关的部件的父类,它为所有窗口组件提供了创建对象(申请资源)、释放资源和事件监听的功能。
Widget有两个比较重要的子类,Control类是所有控件的父类,而Item类则是控件的辅助部分,代表了复杂控件中的某一项。
Button、Label等简单控件都直接继承自Control控件,Scrollable代表拥有滚动条的控件,它的子类有Text和Composite等。Composite是容器控件,这类控件可以将容纳于其中的其他控件在界面上分组摆放。
Canvas是允许程序员使用画点、线等基本图形在其中直接绘图的控件。Shell间接集成自Canvas类。
我们可以用Control(Control parent,int style)来构建一个控件实例,其中第一个参数指明了控件的父资源,第二个参数是控件使用的样式。构造控件时,必须指定控件的父资源。样式控制着控件很多方面的显示和行为方式,它们可以按照用途被归类成不同的组,同属一组的样式应用时只能选择一个。
控件也会占用系统资源,这部分资源的分配是在控件的构造函数中完成的。当一个控件的dispose方法调用后,它所占用的系统资源将被释放,但是控件所对应的Java对象依然存在,如果UI线程试图对这个已经释放的控件进行操作,会得到“空间已呗释放”的异常。所以我们最好不要手动释放一个控件,而应该交由SWT系统自动释放它们。
图形资源
Color
org.eclipse.swt.graphics.Color类管理着操作系统中的颜色资源。对于一些常用的颜色,我们可以自己创建,也可以使用Display.getSystemColor方法获得,需要注意的是,对于我们自己创建的颜色资源在使用完后需要调用display方法释放资源,而通过Display.getSystemColor方法获得的颜色资源我们不应该释放它,避免其他位置引用出错。package swt; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.junit.Test; public class ColorTest { @Test public void test() { Display display = Display.getDefault(); Shell shell = new Shell(display); shell.setSize(300, 150); Color red = new Color(display, 255, 0, 0); //display.getSystemColor(SWT.COLOR_RED); shell.setBackground(red); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } red.dispose(); display.dispose(); } }
运行结果:
Image
如果希望设置窗口的图标或在窗口中显示一幅图片,需要用到Image类,一个Iamge对象就代表一个可用的图片信息。目前,SWT可以直接读取的图像文件格式有:BMP、ICO、JPEG、GIF、PNG和TIFF。除了使用Image类来构造一个图片外,我们还可以使用ImageData类,ImageData包含设备无关的图像文件信息,如图像的尺寸、每个像素的颜色等。在Display中也内置了几个常用的Image对象,包括错误图标、警告图标等,我们可以通过Display.getSystemImage方法获取它们,和Color一样,我们自己创建的图像资源使用完成后需要手动释放。
package swt; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.junit.Test; public class ImageTest { @Test public void test() { Display display = Display.getDefault(); Shell shell = new Shell(display); shell.setSize(300, 150); Image image =display.getSystemImage(SWT.ICON_ERROR); shell.setImage(image); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } }
运行结果:
相关文章推荐
- php使用Image Magick将PDF文件转换为JPG文件的方法
- ASP.NET中Image控件使用详解
- JavaScript与Image加载事件(onload)、加载状态(complete)
- Track Image Loading效果代码分析
- Color Cop V5.4.3_适合网页设计师/多用途的颜色采取器_汉化绿色版 下载
- JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
- CSS的color颜色使用说明
- js的image onload事件使用遇到的问题
- javascript从image转换为base64位编码的String
- SWT(JFace)体验之RowLayout布局
- Thinkphp调用Image类生成缩略图的方法
- asp.net显示图片到指定的Image控件中 具体实现
- 分离与继承的思想实现图片上传后的预览功能:ImageUploadView
- jquery获取css的color值返回RGB的方法
- Java运用SWT插件编写桌面记事本应用程序
- SWT(JFace)体验之GridLayout布局
- python使用Image处理图片常用技巧分析
- [IOS地图开发系类]5、改变大头针MKPinAnnotationView的颜色
- Image Upload based on jQuery