`

SWT基础(一)

    博客分类:
  • SWT
阅读更多

Display:

Display类负责在应用程序和本地操作系统之间建立交互.一般来说,一个应用系统只要创建一个Display的实例,创建Display实例的同时也就启动了一个专有的线程,该线程将执行时间循环,并且保持UI线程.关于Display类的构造方法和其他的方法可以查阅SWT的API.

所有的系统消息首先被display截取,然后他会根据传入的hwnd,定位到相应的Control

,交由Control来处理。Control处理消息的时候,会根据消息的类型,转化为SWTEventObject对象,然后通知消息监听者。这样一来底层消息就转化为SWT的事件对象了。

 

如果你想发送一个鼠标事件或键盘事件给一个控件,Display提供了一个便利的方法post (Event event).

例如:Event event = new Event();

      event.type = SWT.MouseDown;

      event.x = 200;

      event.y = 100;

      event.button = 1;

      display.post(event);

这样只要位于坐标200,100位置下的控件,都会收到一条鼠标按下事件。这个控件甚至可以不是SWT的窗体控件,任何的Windows窗体都可以收到这个事件。 因为Display已经将Event转化成了系统的鼠标按下消息。

post()方法是有局限性的,它只会转发鼠标和键盘消息。最终都是调用的OS.SendInput()方法。

 

org.eclipse.swt.SWTException : invalid thread access

swt在该线程中不仅创建Display,而且还组建, 显示各个widget,以及Receive Message From Operation System .

和调用对应的Listener。然而很多事情都用单线程来处理的话,必然会带来很多的问题。

为了解决这一点,swt在Display中提供两个方法让其他的线程中有机会操作UI的widget.

这两个方法就是: syncExec(Runnable runnable); 和 asyncExec(Runnable runnable);display.syncExec的执行需要等到别的线程执行完毕回调方法才结束,而asyncExec不用。

display.syncExec(

new Runnable() {

   public void run(){

    label.setText(text1);

   }

}

);

 

Shell:

创建shell对象时传入的是Display对象,则为顶级窗口,传入的是shell类则为对话窗口.shell中有很多样式,来对整个对话框的窗体的样式进行设置。

BORDER——当只有BORDER的时候,窗口是一个只有细细白色边框的空白窗口,没有title那一圈蓝色的边框,也没有最大化,最小化,关闭。不能resize,不能移动。在任务栏里右键没有反应。

CLOSE——当只有CLOSE的时候,窗口会出现蓝色的边框,并且有title,title上显示的是setText的内容,没有title就算setText指定了内容也无法显示。没有最大化,最小化,可以移动。任务栏里右键可以关闭和移动。不能resize。

MAX——当只有MAX的时候,窗口会出现蓝色的title边框,并且有最大化,最小化和关闭的按钮,但是最小化的按钮不起作用,关闭的按钮有作用。可以移动,不能resize,任务栏里右键可以移动关闭和最大化/还原。

MIN——当只有MIN的时候,情况跟只有MAX差不多,只是最大化的按钮不起作用。

NO_TRIM——当有NO_TRIM存在的情况下,其他的任何Style都不起作用。窗口是没有边框,连BORDER那样细小的白色边框也没有,没有title的蓝色边框,不能移动,resize和关闭。

RESIZE——当只有RESIZE存在的时候,窗口没有title,只有BORDER,不能关闭,移动和最大最小化。

ON_TOP——当只有ON_TOP存在的时候,窗口始终在最前端,没有title,窗口只有一圈黑色的细小边框。

TOOL——当只有TOOL存在的时候,窗口外观和ON_TOP一样。只是在任务栏中并没有窗口的存在。API中的解释是,TOOL窗口是被用来作为一个工具栏使用的。

APPLICATION_MODAL——当只有APPLICATION_MODAL存在时,窗口外观和ON_TOP,TOOL一样,只是不是始终在最前端,也在任务栏里有窗口。API中说 used by Dialog。

MODELESS——当只有MODELESS存在的时候,窗口外观和APPLICATION_MODAL一样,API中没有任何说明,只知道这个参数value是0。

PRIMARY_MODAL——当只有PRIMARY_MODAL存在的时候,窗口的外观和APPLICATION_MODAL一样,API中也说used by Dialog。

SYSTEM_MODAL——和PRIMARY_MODAL一样。

SHELL_TRIM——是TITLE,CLOSE,MIN,MAX,RESIZE的组合。

DIALOG_TRIM——是TITLE,CLOSE,BORDER的组合。

分享到:
评论

相关推荐

    SWT基础代码涵盖其所有控件

    1. SWT控件基础 SWT提供了丰富的控件集,包括按钮(Button)、文本框(Text)、列表(List)、表格(Table)、树(Tree)、菜单(Menu)、对话框(Dialog)等。每个控件都有其特定的功能和用途,比如按钮用于执行...

    SWT基础概念总结

    **SWT基础概念总结** SWT(Standard Widget Toolkit)是Java平台上的一个开源GUI库,由Eclipse基金会维护。它是为了解决Java的Abstract Window Toolkit (AWT)和Swing库在性能和本地化方面的问题而创建的。SWT允许...

    swt教程 有关SWT怎么应用

    两者的关系可以理解为JFace在SWT的基础上增加了一层抽象,使得开发更加便捷。 开发SWT程序的基本步骤包括: 1. **获取和设置SWT库**:在Eclipse的plugins目录下找到对应的SWT库文件,例如org.eclipse.swt.win32....

    swt的简单代码

    【SWT基础知识】 1. SWT概述:SWT是由Eclipse基金会维护的一个开源项目,它允许开发者创建与操作系统紧密集成的Java GUI应用程序。SWT通过直接调用操作系统API来实现,从而提供了更好的性能和原生外观。 2. SWT...

    java SWT教程

    【SWT基础】 SWT(Standard Widget Toolkit)是IBM为Eclipse开发的GUI库,它的设计目标是提供一个高效且可移植的API,能够与操作系统底层GUI平台紧密结合。SWT利用JNI(Java Native Interface)调用操作系统内核API...

    SWT编程开发学习资料

    1. **SWT基础知识**:SWT提供了一系列控件,如按钮、文本框、列表、树、表格等,以及布局管理器,如FillLayout、GridLayout、 MigLayout等,帮助开发者构建复杂的用户界面。学习SWT时,你需要了解这些基本组件的用法...

    IBM GUI库SWT教程

    ### SWT基础 1. **组件库**:SWT提供了丰富的组件,如按钮、文本框、列表、树视图、表格等,这些组件可以组合起来构建复杂的用户界面。每个组件都有相应的API,开发者可以通过调用方法来实现交互和定制。 2. **...

    swt高级密笈源码swt

    通过深入研究"SWT高级密笈源码"中的示例,开发者不仅能提升对SWT基础知识的理解,还能掌握高级特性和最佳实践,从而在实际项目中游刃有余地运用SWT进行GUI开发。这些源码是学习和提高SWT技能的重要参考资料,值得...

    swt写的类win记事本

    SWT(Standard Widget Toolkit)是Java编程中用于创建图形用户界面(GUI)的一种库,它是Eclipse项目的基础组件。这个“swt写的类win记事本”是一个使用SWT库开发的简易版文本编辑器,旨在模仿Windows操作系统自带的...

    javaSWT简易计算器

    Java SWT(Standard Widget Toolkit)是...这个项目不仅展示了SWT的基础用法,还涵盖了事件处理、数学运算和异常处理等核心编程概念。对于初学者来说,这是一个很好的练习项目,有助于提升Java GUI编程和算法设计能力。

    SWT开发教程1

    SWT(Standard Widget Toolkit)是Java编程环境中用于创建图形用户界面(GUI)的一种开源库,它是Eclipse IDE的基础。SWT的设计目标是提供一个高效、功能丰富的GUI工具包,能够与本地操作系统紧密集成,从而获得更好...

    swt-jface入门

    SWT(Standard Widget Toolkit)是Java开发者用于创建图形用户界面(GUI)的一种库,它与底层操作系统紧密集成,提供了可移植的API。SWT的优势在于其高性能和与操作系统原生界面的接近,这使得用SWT构建的应用程序在...

    SWT的简单实例

    总的来说,"SWT的简单实例"提供了学习和实践GUI编程的基础。通过理解并运用这些组件和事件处理机制,开发者可以逐步构建更复杂的用户界面。这个例子对于熟悉SWT的基本用法,以及如何将它们整合到实际应用中非常有...

    SWT3.5.2 Linux下的64位包

    SWT是Eclipse IDE的基础组件之一,Eclipse的很多界面组件就是基于SWT实现的。因此,熟悉SWT对于开发Eclipse插件或者基于Eclipse RCP(Rich Client Platform)的应用程序是非常重要的。 7. **移植性**: 虽然SWT...

    SWT.rar_SWT_eclipse swt

    SWT,全称为Standard Widget Toolkit,是Eclipse项目下的一个开源库,主要用于构建原生的图形用户界面(GUI)。SWT的设计目标是提供一个高效、轻量级且与操作系统紧密集成的GUI工具包,它允许开发者创建出与操作系统...

    SWT 各种小示例集中

    8. **JFace控件**:JFace在SWT基础上添加了如DataBinding、ViewPart、SashForm等高级组件,简化了数据模型和视图的绑定,使得UI的创建更加直观和简洁。 9. **表单和数据绑定**:JFace的DataBinding机制使得数据模型...

    SWT界面设计PDF

    "Java程序设计之swt教程.pdf"则侧重于SWT的基础知识和实践应用,适合初学者。你将学习如何导入和使用SWT库,创建窗口和对话框,以及添加各种控件。这份教程还会讲解如何通过布局管理器组织控件,以达到理想的界面...

    初学SWT (一)

    初学者在掌握SWT基础后,可以进一步学习JFace来提升开发效率。 7. ** SWT与Eclipse**: SWT是Eclipse IDE的核心部分,用于构建其用户界面。因此,学习SWT对于开发Eclipse插件或理解Eclipse内部工作原理非常有帮助...

    swt学SWT者必备的帮助文档

    首先,了解SWT的基础是至关重要的。SWT的核心是它的控件库,包括按钮、文本框、列表、树、表格等常见的GUI元素。这些控件直接映射到操作系统原生的控件,从而提供了一种高效且平台一致的界面体验。例如,`Button`类...

    swt编程,不错的电子书

    JFace是在SWT基础上提供更高抽象级别的库,它简化了UI组件的使用,处理了与动态用户界面相关的常见任务,但并不完全隐藏SWT的功能。JFace的目的是为了让开发者更专注于应用逻辑,而不是底层的GUI实现细节。Eclipse的...

Global site tag (gtag.js) - Google Analytics