摘要:
第六节 本章小结 返回目录 尽管刚刚解开JFace的面纱,你已经可以看出它的一些好处了[3]。通过对SWT一些细节的抽象,JFace允许你将注意力从“你的程序如何工作”转移到“你想要你的程序做什么”上。抽象是面向对象编程的中流砥柱,它的力量让程序开发更加简单。 使用JFace要求和程序一起发布更多的库,别对此感到恼火。不管怎样,毕竟你将会从... 阅读全文
摘要:
第五节 关于WindowManager的一些话 JFace包含一个叫WindowManager的类[2],它并不会控制窗口的外观,也不会管理用户和窗口的交互,而是将窗口编组,这样你就可以迭代的访问它们或者将它们整组的关闭。WindowManager的实例拥有窗口,也可以同时可选的拥有其他WindowManager的实例。WindowManager提供了两种构造函数,在表13-1中列出... 阅读全文
摘要:
第四节 ApplicationWindow类 返回目录 本章中的HelloWorld程序继承了ApplicationWindow类。ApplicationWindow正如它的名字一样,表示了一个窗口应用程序。它有一个父亲Shell,是从构造函数传进去的: ApplicationWindow(Shell pare... 阅读全文
摘要:
第三节 SWT和JFace的关系 返回目录 不要觉得前面学习SWT是在浪费时间,觉得一旦拥有JFace之后就再也不用见到SWT了,事实上SWT决不仅仅总是简单的被JFace调用[1]。不但抽象会有漏洞,而且JFace也没有覆盖SWT的全部。尽管你沉浸在JFace当中,你仍然可以从SWT的知识中得到许多好处。 因为JFace使用了SWT,并且因为JFace是构建... 阅读全文
摘要:
第二节 问候JFace的世界 返回目录 HelloWorld程序又一次向世界问候了,不过这一次是用JFace。因为JFace添加了一些Java库(但是并没有本地库——记住它是建立在SWT之上的),你需要一个新的Ant文件(见清单13-1)去生成和运行这个程序。 清单13-1: build... 阅读全文
摘要:
第一节 概述 返回目录 毕加索在他的抽象艺术中,仅仅描绘他主题中的本质元素。商业建议或者其他书面文本通常带有内容的摘要或者总结。在这样的心境下,面向对象编程宣扬抽象性——消除无关因素,只保留必须的。例如,如果要开发一个给兽医用的管理软件,你会创建一个Dog类(继承自一个Pet类),包含和狗相关的内容。这个Dog类表示了对真实生活中狗的抽象,但它并不是一个精确的狗的模型... 阅读全文
摘要:
第五节 使用GridLayout 返回目录如果读者只打算学习一种layout,那就是GridLayout。GridLayout封装了读者想要学习的绝大多数能力,适用于从简单到复杂的应用。就像它的名字暗示的那样,GridLayout在网格中徘布控件。通过复合控件在GridLayout中嵌套使用GridLayout,读者可以构建复杂的layout。GridLayout有两个构造函数,列在表4-3中。 表4-3: GridLayout的构造函数 构造函数 说明 public GridLayout() Constructs a default GridLayout. public GridLayout 阅读全文
摘要:
第四节 使用RowLayout 返回目录 RowLayout与FillLayout很相似:它把所有的控件放在一行或一列中。但是,它不会把所有的控件都设为相同的大小。如果空间不够,它会把控件放到另一行或另一列中。 ... 阅读全文
摘要:
第三节 使用FillLayout 返回目录 FillLayout是布局类中最简单的,它把所有的控件放在一行或一列,并使它们有相同的大小。它有一个公有(public)的属性和类型,决定控件是放在一行还是放在一列。可以把类型传递给构造函数,也可以在构造函数后设置类型。FillLayout的构造函数请参见表4-1。 ... 阅读全文
摘要:
第二节 布局(layout) 返回目录 在composite中的控件(controls in a composite)与这个composite之间,布局为它们提供了松耦合层(decoupling layer)。布局一般使用平台无关的方式,而且通常在父窗体改变大小时保持相应大小(maintains relative sizing)。可以通过composite的setLayou... 阅读全文
摘要:
第一节 概述 (本节内容已遗失) 阅读全文
摘要:
第七节 本章小结 返回目录 基于SWT的程序通过Display对象与底层的视窗系统建立连接。窗口,控件和事件都是构建于这个至关紧要的对象之上并通过它传递。在程序中创建的窗口都是Shell。本章构建了必须的“Hello, World”SWT程序并讲解了SWT背后的设计。现在我们知道如何创建控件,如何清除自己的控件,以及不要去碰那些不属于我们的东西(控件)。 下一章,我们将学习如何把窗... 阅读全文
摘要:
第六节 SWT类的常量与函数 返回目录 SWT类有一堆类级别(class-level)的常量和方法用来简化SWT编程。 没有什么事情阻止您创建一个SWT对象,因为创建一个不会带来任何坏处。SWT类继承于java.lang.Object,它没有定义构造函数,所以默认的构造函数会被调用。然而,一个SWT对象除了继承于java.lang.Object的状态,没有任何状态(state),本... 阅读全文
摘要:
第五节 剖析Shell对象 返回目录 Shell对象代表了一个窗口——要么是个顶级窗口,要么是个对话框。它容纳(contain)了各种各样的控件以构建应用程序:按钮、文本框、表格等等。它有六个构造函数,其中两个已不推荐使用,而且将来的发行版可能不再支持它们。构造过程沿用了SWT传递一个容器(parent)和一个样式(或者多个样式的位与or),有些构造函数允许单个或两个参数使用默认值。表3... 阅读全文
摘要:
第四节 剖析Display对象 返回目录 Display对象是程序级别的SWT类与底层视窗系统实现之间的连接。Display类是依赖与视窗系统的,在某些平台上可能还会有一些附加的API函数。这里,我们只讨论广泛适用的那部分API。 通常,程序有一个,仅有一个Display对象(这是某些视窗系统底层的限制)。默认地,创建display对象的那个线程,就是执行事件循环、作... 阅读全文
摘要:
第三节 剖析SWT的设计原则 返回目录 在第一章我们已经介绍过,SWT使用底层操作系统提供的本地控件库,它仅仅是程序与底层系统交互的Java接口。本地控件的生命期(lifecycle)就像是Java控件对象的一个镜中像:创建Java控件的时候,本地控件同时被创建;销毁Java控件的时候,本地控件也被销毁了。这种设计避免了一种情况的出现,就是底层控件还没有创建的时候调用代码控件的方法(m... 阅读全文
摘要:
第二节 剖析代码 返回目录 下面几行代码表明需要引入(import)哪些包: import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.SWT; 大多数使用S... 阅读全文
摘要:
第一节 SWT版的“Hello, World” 返回目录 新手总是渴望向代码世界致意。本章,将引导您创建第一个SWT程序——那个不可避免的“Hello, World”。它阐释了SWT如何工作,并贯穿了以后使用的主要的SWT对象。它还会谈论SWT控件的生命周期。 在前一章的BlankWindow基础上,做一点小小的修改,就可以把他转变成规范的“Hello World”程序。具体来说说... 阅读全文
摘要:
第七节 本章小结 返回目录 本章,我们认识了Eclipse.org的旗舰产品Eclipse,以及很多与它一起提供的强大工具。它(们)既是开发Java程序的IDE;又包括了开源库SWT和JFace,使得我们可以开发卓越的程序。同时,我们也知道了SWT与JFace不依赖Eclipse——这样就可以继续使用个人喜欢的开发工具来构建SWT与JFace程序。 下一章,我们将探索SWT,并编写第一... 阅读全文
摘要:
第六节 Eclipse的替代方案 返回目录 您是不是认为IDE是给菜鸟用的,真正的程序员都在用Emacs或vi的?或者您喜欢IntelliJ IDEA而不愿换成另一个IED?或许您没有一分钱,没有一丝硬盘空间,只有一丁点内存;或是您打算在Windows的记事本上做所有的开发;也可能您从没离开过Visual SlickEdit或CodeWright。那么SWT适合您吗? 答案是肯定的。尽... 阅读全文