SWT源码分析 (七)

通过前面这些文章,对SWT程序执行的流程作了一些解释。

分析SWT的源码,实际上并不困难,只要了解了windows 程序执行的基本步骤。前面对程序的分析,可以分为2部分,一是寻找RegisterClass,CreateWindowEx这些windows api,寻找窗口创建的一系列流程,分析的是如何实现。

二是分析SWT对消息处理的封装,因为我们是在写Java程序,Java是OO的,我们不会再去写窗口过程函数了,分析的是“架构”,“模式”。

 

 

总结一下SWT程序的流程:

 

1.  Display display = new Display();

没有创建窗口,作了一些初始化、准备操作。一个程序往往只有一个Display对象,display对象持有很多程序其他对象的引用。

 

2. Shell shell = new Shell(display);

创建主窗口。

 

3. 类似Button b1 = new Button(shell,SWT.NONE); Text  text = new Text(shell,SWT.NONE);

创建控件,控件其实也是窗口。

 

4. 控件.addXXXListener();

监听控件的具体事件,实际上往控件上绑定了事件类型和监听器。

 

5. shell.open();

显示窗口。

 

6.

 

 

            while (!shell.isDisposed()) { // 如果主窗体没有关闭则一直循环

                        if (!display.readAndDispatch()) { // 如果display不忙

                                display.sleep(); // 休眠

                        }

                }

                display.dispose(); // 销毁display

 

进入消息循环,因为windows程序是“基于消息,事件驱动”的,所以程序时异步运行的,当发生了一个事件,

就会进入Display内部的窗口过程函数。Display中接收的是windows消息,将windows消息转换为SWT自己的事件,再交由具体的控件做处理。

就这样一直循环到程序退出。

 

 

至于SWT涉及到的一些模式。我如果我看出来,也会写出来,目前还没看出来什么。

Kettle 是一款功能强大的 ETL 工具,其源码主要分为以下几个部分: 1. 核心引擎:该部分代码位于 `core` 包下,包括了大量的类和接口,用于执行各种 ETL 操作。其中,`org.pentaho.di.trans.Trans` 类是最核心的类,表示一个转换(Transformation),可以执行所有的 ETL 操作。 2. 数据源和目标插件:该部分代码位于 `plugins` 包下,包括了各种数据源和目标插件,如 MySQL 插件、Hadoop 插件、文件插件等。每个插件都有自己的 `Input` 和 `Output` 类,用于读取和写入数据。 3. 步骤插件:该部分代码位于 `steps` 包下,包括了各种步骤插件,如转换步骤(Transformation Step)、过滤器步骤(Filter Step)、排序步骤(Sort Step)等。每个步骤都有自己的 `Step` 类,用于执行具体的操作。 4. 转换元数据:该部分代码位于 `metadata` 包下,包括了各种转换元数据,如数据库连接、文件路径、参数等。每个元数据都有自己的类,用于存储和管理相关信息。 5. UI:该部分代码位于 `ui` 包下,包括了 Kettle 的用户界面。Kettle 采用 SWT 技术实现界面,其中 `org.pentaho.di.ui.spoon.Spoon` 类是最核心的类,表示 Kettle 的主界面。 总体来说,Kettle 的源码比较庞大,但其代码结构清晰,模块化程度高,易于维护和扩展。如果想深入了解 Kettle 的运行机制和实现细节,可以从以上几个方面入手,逐步深入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值