SWT文档

合集下载

SWT的字体(Font)、颜色(Color)、图像(Image)和绘图

SWT的字体(Font)、颜色(Color)、图像(Image)和绘图

SWT的字体(Font)、颜⾊(Color)、图像(Image)和绘图下⾯⼀个例⼦展⽰了Font、Color、Image 以及绘图的基本内容。

1. import org.eclipse.swt.SWT;2. import org.eclipse.swt.events.PaintEvent;3. import org.eclipse.swt.events.PaintListener;4. import org.eclipse.swt.graphics.Font;5. import org.eclipse.swt.graphics.Image;6. import yout.FillLayout;7. import org.eclipse.swt.widgets.Canvas;8. import org.eclipse.swt.widgets.Display;9. import org.eclipse.swt.widgets.Shell;10.11.12. public class CanvasSample {13. private Image image = null;14. private Shell shell = null;15. private Canvas canvas = null;16.17. public CanvasSample(){18. createContent();19. }20.21. public void createContent(){22. shell = new Shell();23. shell.setLayout(new FillLayout());24. image = new Image(shell.getDisplay(), getClass().getResourceAsStream('1.gif'));25. canvas = new Canvas(shell, SWT.NONE);26. canvas.addPaintListener(new PaintListener(){27. public void paintControl(PaintEvent e){28. //绘制图像29. e.gc.drawImage(image, 10, 10);30. //绘制椭圆31. e.gc.drawOval(20, 20, 200, 100);32. //绘制直线33. e.gc.drawLine(20,10,100,20);34.35. Font font = new Font(e.display, 'Arial', 14, SWT.BOLD | SWT.ITALIC);36. //绘制字符串37. e.gc.drawString('This is a String', 30, 20);38.39. //设置display前景⾊40. e.gc.setForeground(e.display.getSystemColor(SWT.COLOR_GREEN));41. //设置display字体42. e.gc.setFont(font);43. //设置display 背景⾊44. e.gc.setBackground(e.display.getSystemColor(SWT.COLOR_DARK_GRAY));45. //再绘制字符串46. e.gc.drawString('This is a String', 30, 50);47.48.49. font.dispose();50. }51. });52. shell.setSize(200, 150);53. }54.55. public Canvas getCanvas(){56. return canvas;57. }58. public void setCanvas(Canvas canvas){59. this.canvas = canvas;60. }61. public Image getImage(){62. return image;63. }64. public void setImage(Image image){65. this.image = image;66. }67. public Shell getShell(){68. return shell;69. }70. public void setShell(Shell shell){71. this.shell = shell;72. }73. public static void main(String[] args){74. Display display = Display.getDefault();75. CanvasSample cSample = new CanvasSample();76. cSample.getShell().open();77. while(!cSample.getShell().isDisposed()){78. if(!display.readAndDispatch())79. display.sleep();80. }81. cSample.getImage().dispose();82. display.dispose();83. }84. }运⾏如下图所⽰:该程序画了⼀个图⽚,⼀个椭圆,⼀个直线,⼀个字符串,然后设置前景⾊背景⾊和字体后重新画字符串。

SWT教程1_入门

SWT教程1_入门
Shell 是一个窗口组件,它也是 Widget 类的一个子类。因此 Shell 组件遵从前文描述的有关窗口 组件生命周期的概念,Shell 类提供了多个构造方法,如表 3 所示。
表3
类 Shell 的构造函数
构造函数 Shell()
Shell(Display display)
Shell(Display display, int style)
当调用组件的 dispose()方法时,与其对应的平台组件将被释放,但是此时该组件对象仍然存在。 此时调用该对象的方法会有什么结果呢,如代码 2 所示。 代码 2
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
Shell 类
运行 HelloSWT 程序,可以看到一个标准的窗口程序,这个窗口就是 Shell 窗口组件。该组件作为容器 “存放”应用程序的其他控制组件,比如 Label、Text、Tree 等。当创建这些控制组件时,通常都以 Shell 组件作为其父亲组件
[注] Widget 子类之间的继承关系与创建窗口组件时的父子关系是两个不同的概念。
public class HelloSWT {
public static void main (String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("HelloSWT"); shell.open(); while (!shell.isDisposed()) {
大小可修改。 窗口包含标题栏。 BORDER | CLOSE | TITLE 的组合。 CLOSE | MIN | MAX | RESIZE | TITLE 的组合。

SWOT分析表格WORD模板

SWOT分析表格WORD模板

SWOT分析表格WORD模板篇一:SWOT分析模型 Word 文档SWOT分析模型SWOT分析模型(SWOT Analysis)SWOT分析法(也称TOWS分析法、道斯矩阵)即态势分析法,20世纪80年代初由美国旧金山大学的管理学教授韦里克提出,经常被用于企业战略制定、竞争对手分析等场合。

SWOT 分析模型简介在现在的战略规划报告里,SWOT分析应该算是一个众所周知的工具。

来自于麦肯锡咨询公司的SWOT分析,包括分析企业的优势(Strengths)、劣势(Weaknesses)、机会(Opportunities)和威胁(Threats)。

因此,SWOT分析实际上是将对企业内外部条件各方面内容进行综合和概括,进而分析组织的优劣势、面临的机会和威胁的一种方法。

通过SWOT分析,可以帮助企业把资源和行动聚集在自己的强项和有最多机会的地方;并让企业的战略变得更加明朗。

[编辑]SWOT模型含义介绍优劣势分析主要是着眼于企业自身的实力及其与竞争对手的比较,而机会和威胁分析将注意力放在外部环境的变化及对企业的可能影响上。

在分析时,应把所有的内部因素(即优劣势)集中在一起,然后用外部的力量来对这些因素进行评估。

1、机会与威胁分析(environmental opportunities and threats)随着经济、社会、科技等诸多方面的迅速发展,特别是世界经济全球化、一体化过程的加快,全球信息网络的建立和消费需求的多样化,企业所处的环境更为开放和动荡。

这种变化几乎对所有企业都产生了深刻的影响。

正因为如此,环境分析成为一种日益重要的企业职能。

环境发展趋势分为两大类:一类表示环境威胁,另一类表示环境机会。

环境威胁指的是环境中一种不利的发展趋势所形成的挑战,如果不采取果断的战略行为,这种不利趋势将导致公司的竞争地位受到削弱。

环境机会就是对公司行为富有吸引力的领域,在这一领域中,该公司将拥有竞争优势。

对环境的分析也可以有不同的角度。

SWT开发参考文档

SWT开发参考文档

在本文档的编写过程中参考如下网站的知识库,希望读者也能通过它们受益
/developerworks/cn/java/ IBM 中国 java 技术中心
/
非常好的一个示例代码参考网站
/
SWT 开发参考
SWT 开发参考
发布记录 版本 1.0
日期 2009-12-3
作者 :Spirit_demon E-mail:itlabers@ 文档说明
作者 Spirit_demon
修改内容 建立初稿
本文档的部分内容来自互联网,一些 SWT 技术专家归纳总结十分到位,在此我只不过 将内容重新编排,方便读者阅览,从中受益,文字内容版权归原作者所有。本文档(文本、 代码)在免费、且无任何附加条件的前提下,可在网络媒体中自由传播。
4.1. SWT 起步..............................................................................................................................6 4.2. Button 组件........................................................................................................................... 7 4.3. Label 类组件........................................................................................................................ 9 4.4. Text 组件.....................

SWT布局管理

SWT布局管理

SWT之布局对于Window编程来说, 我们一般不会涉及到布局这个概念,因为基本上我们都是直接设置控件的大小, 位置等布局信息, 但是对于java来说就不一样了, 它涉及到跨平台的问题, 控件的位置和大小不是由它本身来控制的,因此我们不会看到控件有x, y, width, height等属性,而必须通过外面LayoutData和Layout来控制控件的位置和大小,这个是使用Java进行客户端编程必须转变的一个观念,当然这个也不是绝对,后面我们也会看到不使用布局的做法,但是我们一般不提倡这样做Layout可以理解为它是控件和其所在容器之间的一层抽象, 它决定了控件在容器中的位置, 而且它是与平台无关的, 它会根据容器大小的变动来调整控件的尺寸.而且容器只能设置一种布局方式, 其包含的控件的布局是不依赖其他容器的首先要介绍的是FillLayout, 它是所有布局中最简单的一种, 使用了该布局的容器中的所有控件将以同一尺寸放在一行或者一列中, 它有一个type属性,用来指定布局是采用列排列还行排列, type的属性值为SWT.HORIZONTAL和SWT_VERTICAL, 默认情况下是行排列, 因为这个type是一个int常量,如果这个常量既不是水平也不是垂直的话,他们系统将默认是垂直排列接下来是RowLayout,跟FillLayout比较类似,都是按行或列排列包含在容器中的控件, 唯一不同的就是不会限制所有的控件采用同一大小, 而且如果一行或一列排列不下时会自动换行或者换列, 在使用RowLayout的时候,还会用到RowData类, 容器中的控件将通过它来制定自己的大小, RowLayout将根据每个控件的RowData信息来决定控件在整个容器中放置的位置, RowData可以直接在构造函数中通过width和height参数设置,也可以将width和height包装成Point对象作为其构造参数来设置其大小, RowLayout除了有一个跟FillLayout 一样的type属性之外,还有另外几个属性需要介绍一下:justify属性为true表示位于同一列或者同一行中的控件之间的间距相等;marginBottom(Left, Right, Top)设置边距;space指定间距;wrap指定是否换行;所有的布局都可以通过GridLayout来实现, 它也是我们用的最多的布局, 它采用表格的形式来放置容器所包含的控件, numColumns是该布局最重要的属性, 他决定了布局的结构, 所有的控件将从左到右被放在容器中, 它还有一些其他的属性:horizontal(vertical)Spacing指定相邻单元格间距;makeColumnsEqualWidth 是否强制同宽;marginHeight(Width, Top, Bottom)设置指定边距;我们还可以结合给控件指定GridData来进行布局, 但是GridData不能在控件之间公用, 它的一些属性必须说明:grabExcessHorizontal(Vertical)Space为true的意思是指定控件所在单元格将获取所在行(列)剩余的所有空间, 如果一行(列)有多个控件设定该属性为true则只有第一个设置有效, 注意这里只的是cell并不是控件;height(width)Hint设置控件的最小高(宽),注意这里指的是控件而不是单元格;horizontal(vertical)Alignment:这个属性用来设置控件在单元格中的对其方式,有BEGINNING(左对齐),CENTER(居中),END(右对齐),FILL(填满整个单元格)几个值; horizontal(vertical)Indent:这个是用来水平(垂直)方向上设置控件到单元格之间的间隔; horizontal(vertical)Span:是用来指定控件在水平(垂直)方向上所占用的单元格;GridData还有一些常量需要解释一下,BEGINNING,CENTER,END,FILL是用来设置对其方式的,不能作为构造函数的style参数, FILL_BOTH相当于将horizontalAlignment, verticalAlignment设置为FILL加上grabExcessHorizontalSpace和grabExcessVerticalSpace设置为true, 也就是说在构造函数的style参数设置为该值相当于设置了4个属性;FILL_HORIZONTAL = (horizontalAlignment = FILL) + (grabExcessHorizontalSpace=true); FILL_VERTICAL = (verticalAlignment = FILL) + (grabExcessVerticalSpace=true); GRAB_HORIZONTAL = (grabExcessHorizontalSpace =true); GRAB_VERTICAL = (grabExcessVerticalSpace =true), 类似HORIZONTAL_ALIGN_BEGINNING这样的从字面都可以知道意思了FormLayout是所有布局里面最复杂的一种, 它也使用到自己的LayoutData:FormData, 另外它还会在FormData中通过使用FromAttachment来控制关联控件的位置, FormData可以设置四个FormAttachment实例,分别表示控件的四边与相对控件之间的位置关系, FormAttachment有以下几个成员变量:alignment 用来指定关联的控件的某个边和相对控件之间的对齐方式, 如果关联的是上下位置,那么可以设置SWT.TOP, SWT.CENTER, SWT.BOTTOM,是左右位置可以设置SWT.LEFT, SWT.CENTER, and SWT.RIGHT, 该属性一般在指定的相对控件不是容器的时候使用, 否则会没有效果;control属性指的是相对哪个控件,默认情况下是指的关联控件所在的容器;denominator 是分母默认是100,这个一般不设置;numerator是分子, 这两个值在control是关联对象的容器的时候才有意义, 用来指定应用的控件到容器关联边在整个容器中的百分比,说白了就是相对位置;offset是偏移量,说白了就是关联控件与相对控件指定边之间的绝对位置从FormAttachment的构造函数我们就可以看出来,一般哪些属性是一起设置的, 比如只设置control, 同时设置control和offset, 同时设置control, offset和alignment, 只设置分母, 同时设置分母和分子, 同时设置分母分子和偏移量StackLayout是一个用的很少的布局, 从字面意思我们可以看出来, 它是将使用该布局的容器内的所有控件位置,大小设置为相同, 然后层叠在一起,只有位于最上面控件可见, 它使用topControl来指定哪个控件位于堆栈最上层并可见, 如果设置为null表示所有控件均不可见, 设置之后并调用容器的layout()方法才能使指定的控件可见如何自定义布局通过学习如何自定义布局,可以对SWT的布局实现做深层次的理解自定义布局需要继承Layout类,并实现compluteSize和layout方法, 关联控件会调用compluteSize方法根据当前控件所包含子控件的大小计算出一个最小的尺寸值,返回值是Point里面的就是高宽值,就是确定要布局的容器的作用范围,而调用layout方法则是为容器中的每一个控件通过调用其setBounds方法来设置位置和大小, 如果需要更多的信息来帮助对控件进行布局,那么可以自己顶一个类来封装这些信息然后通过setLayoutData设置给control.不使用布局如果你不要面对垮平台,以及根据布局自动调整容器中的控件,那么也可以不通过布局来确定控件的位置和大小,通过自定义我们知道,布局都是通过调用里面控件的setBounds方法来确定控件的位置的,所以我们要做的就是直接调用控件的setBunds方法而已.。

SWT之FormData布局

SWT之FormData布局

SWT 之 FormAttachment转自:/naughty610/archive/2010/02/16/5309862.aspx像其它的layout类一样,FormLayout用的data类是:FormData。

FormData 用另外一个类来控制窗口小部件的大小和位置: FormAttachment.一个FormData 最多用4个FormAttachment,它们分别对应这个小部件的4个面:顶部,底部,左边和右边。

FormAttachment定义了小部件在parent composite或是这个composite里其它部件的位置。

FormAttachment计算位置和大小的方法:y=ax+b在这个等式中,在数学上y代表的是纵坐标,x是横坐标值.a是斜率,b是偏移量.按照FormAttachment的规则,y是高,x是宽度,a是一个相对其它部件的百分率,b是偏移量.FormAttachment实例中的每个数据成员分别代表这些值.以下(表一)是FormAttachment的数据成员表和相应的意思:表一:FormAttachment数据成员AttributeDescriptionint alignment指定是以另外一个部件的哪一边为基准的.可能的值是:SWT.TOP , SWT.CENTER , 和 SWT.BOTTOM.默认是以最近的一边为基准.Control control指定 FormAttachment是以哪个部件为参照物.int denominator指定分母.默认值为100int numerator指定分子int offset指定离 composite边界或部件的边界的偏移量.单位是象素.FormAttachment 拥有5个构造函数,没有一个是空的,它们如下表(表二)所示:表二:FormAttachment 的构造函数:ConstructorDescriptionFormAttachment(Control control)以另外的某个部件为参照物.FormAttachment(Control control, int offset)以另外的某个部件为参照物,加上偏移量.FormAttachment(Control control, int offset, int alignment)以另外的某个部件为参照物,加上偏移量和alignmentFormAttachment(int numerator)设定分子.分母为100,没有偏移量FormAttachment(int numerator, int offset)指定分子和偏移量和 100的分母FormAttachment(int numerator, int denominator, int offset)特定的分子,分母,偏移量FormData最多包含4个FormAttachment 实例,每个对应了与它联系的部件的一边.另外,FormData也可以指定宽和高.表四列出了FormData的数据成员:AttributeDescriptionFormAttachment bottomThe FormAttachment corresponding to the bottom side of the control.这个FormAttachment 用来指定部件的底部位置int height这个部件的高度.单位为象素.FormAttachment left这个FormAttachment 用来指定部件的左部位置FormAttachment right这个FormAttachment 用来指定部件的右部位置FormAttachment top这个FormAttachment 用来指定部件的顶部位置int width这个部件的宽度.单位为象素.当你生成一个FormData对象,你可以自己传给它宽和高的值.如果你没有指定FormAttachment 对象,部件会自动以parent composite的上边界和左边为起始边界.如果你这样定义了多个部件,它们会都在composite的左上角.FormLayout 有两个数据成员 marginHeight和marginWidth,用来以象素为单位来指定大小.它们用来指定包围composite里所有内容的空白. marginHeight对应的是顶部和底部的空白大小,marginWidth对应的是左边和右边的空白大小.空白的默认值是0.以上的话如果你看得不大懂也没有关系,我们按照具体的例子来看就知道了.用到FormLayout的最简单的例子就是一个窗口里一个按钮,并且不用FormData.import org.eclipse.swt.SWT;import yout.FormLayout;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;public class TestFormLayout {public static void main(String[] args) {Display display = new Display();Shell shell = new Shell(display);shell.setLayout(new FormLayout());new Button(shell, SWT.PUSH).setText("Button");shell.pack();shell.open();while (!shell.isDisposed()) {if (!display.readAndDispatch()) {display.sleep();}}display.dispose();}}通过上述代码我们可以简单的在一个shell上设置一个button,并且button距离整个界面的其他的边界距离为0。

实验三:SWT程序开发【范本模板】

一.实验目的及要求1、了解SWT的历史2、掌握SWT程序开发基本步骤3、掌握SWT组件的事件处理机制及方法4、掌握SWT中的Label、Text、List、Combo、Table、Tree、Composite、Group、Tabfolder、Menus组件的用法。

二、实验内容及步骤1、新建一Java工程项目:SWTDemoProject2、设置项目的建构路径,右单击项目名,Build Path-〉Configure Build Path,单击Add External JARs,3、定位到C:\Program Files\MyEclipse 6。

5\eclipse\plugins,选中org.eclipse.swt。

win32.win32.x86_3.3.3.v3349.jar和org。

eclipse。

swt_3.3。

2.v3349d.jar,单击“打开”按钮4、在包com.whut中新建一个类LabelDemo:public class LabelDemo {public static void main(String[] args){//Display连接底层平台和SWT,负责管理SWT事件循环,以及提供访问SWT所需的底层平台资源。

Display display = new Display();Shell shell = new Shell(display); //shell是程序的主窗口shell.setText(”Hello World”);//设置主窗口的标题shell.setBounds(100, 100, 200, 50); //设置主窗口的大小(长200像//素,高50像素)和位置(窗口的左角离显示器左角顶点100,100像素处)shell。

setLayout(new FillLayout()); //设置主窗口的布局Label label = new Label(shell, SWT.CENTER); //创建标签组件label。

SWT——赴美带薪实习

SWT——赴美带薪实习SWT:即Summer Work&Travel ,赴美带薪实习计划。

是美国政府的一个项目,欧洲开展的比较多,50年历史了,就是欧洲大学生那种放暑假了,背个包游离世界,好羡慕,期待啊,中国开展的比较晚,才引进中国几年,但是发展挺快的,国内做的比较好的几家是美邦、美之旅、新东方。

PS:下面一个网上的文档美之旅赴美带薪实习计划,即Summer Work & Travel USA基于美国政府于1948年通过的信息及教育交流法案(Smith-Mundt Act),该法案为交流访问项目建立了基本框架。

此法案于1961年被纳入并扩展为教育及文化平等交流法案(Fulbright-Hayes Act)。

项目在中国大陆推广之前,已经在欧洲、美洲及亚洲其他国家和地区成功运作了40余年,每年都有数万学生利用他们的暑假,持J-1签证进入美国企业进行为期8-16周的短期实习。

并利用实习之余的时间,在美境内旅游或实地体验美国生活,了解美国风土人情。

项目的特点在于为全世界大学生提供了一个踏上美国国土、体验美国生活文化、提高英语能力、进入美国企业,与美国同事以及来自其他国家实习生并肩工作的机会。

此外J-1签证让每个实习生在完善的美国劳动制度保障下进行实习工作,与美国同事同工同酬。

这不仅是美国社会平等独立自主人权特性的体现,也可实际的减低赴美实习学生的经济负担。

2009年上半年,赴美带薪实习项目一经推出。

,立即得到了广大学生的热烈响应,数百人踊跃报名,经过面试遴选,其中近百名优秀大学生被录取,获得了美国实习企业的带薪实习工作岗位。

首批赴美学生全部顺利获得美国使馆签证,赴美开展了8~12周丰富多彩的工作与学习生活。

Work & Travel USA 项目优势★美国国务院指定项目,安全性有可靠保证。

所有美之旅赴美文化教育项目全部依据美国国务院法案制定,第一大优势是美国政府背景所带来的安全性。

SWT-事件模型

shellDeiconified()当窗口不是最小化时
shellIconified()当窗口最小化时
----------------------------------------------------------------------------------------
TableColumn、TableTree、
Text、TreeToolItem
----------------------------------------------------------------------------------------
SelectionEvent SelectionListener widgetSelected() Button、CCombo、Combo
SelectionAdapter widgetDefaultSelected() CoolItem、CTabFolder、List
----------------------------------------------------------------------------------------
常用的事件
事件类型 监听器和适配器 监听器中的方法 说明 可注册的GUI控件
ArmEvent ArmListener widgetArmed() 菜单项被选中之前 MenuItem
每种事件携带的信息稍有不同,但不论是什么事件,都可以从事件中获得以下信息:
* e.display:事件发生时的Display对象
* e.data:保存系统使用的数据,一般不常用
* e.widget:事件发生的控件对象,通常要进行强制的类型转换,因为所有的控件都继承自Widget类

完整的SWT示例:可编辑的table

完整的SWT示例:可编辑的table在项目开发时用到了table,但是想直接编辑表格中的内容,但是SWT Table 是不支持直接编辑功能的,查阅了相关资料后,利用TableEdior实现了可编辑的Table,代码如下:importorg.eclipse.swt.SWT;importorg.eclipse.swt.custom.TableEditor;importorg.eclipse.swt.events.FocusAdapter;importorg.eclipse.swt.events.FocusEvent;importorg.eclipse.swt.events.ModifyEvent;importorg.eclipse.swt.events.ModifyListener;importorg.eclipse.swt.graphics.Point;importorg.eclipse.swt.graphics.Rectangle;yout.GridData;yout.GridLayout;importorg.eclipse.swt.widgets.Control;importorg.eclipse.swt.widgets.Display;importorg.eclipse.swt.widgets.Event;importorg.eclipse.swt.widgets.Listener;importorg.eclipse.swt.widgets.Shell;importorg.eclipse.swt.widgets.Table;importorg.eclipse.swt.widgets.TableColumn;importorg.eclipse.swt.widgets.TableItem;importorg.eclipse.swt.widgets.Text;publicclassEditableTable {private Table table;private Display display;privatestaticintITEM_COUNT= 10;privatestaticintCOLUMN_COUNT=4;privatestaticintCOLUMN_WIDTH=150;publicvoidTest() {display=newDisplay();Shell shell =newShell(display);shell.setText("SWT示例:可编辑的Table ");shell.setLayout(newGridLayout());// Table的初始化table=newTable(shell, SWT.BORDER|SWT.FULL_SELECTION);table.setHeaderVisible(true);table.setLinesVisible(true);table.setItemCount(ITEM_COUNT);table.setLayoutData(newGridData(SWT.FILL,SWT.FILL,true,true));TableColumn[] columns =newTableColumn[COLUMN_COUNT];for(inti = 0; i <COLUMN_COUNT; i++) {columns[i] =newTableColumn(table, SWT.CENTER);columns[i].setText("Column"+newInteger(i+1).toString());columns[i].setWidth(COLUMN_WIDTH);}//监听对table 的双击事件,执行可编辑操作table.addListener(SWT.MouseDoubleClick,listener);shell.open();while(!shell.isDisposed()) {if(!display.readAndDispatch()) {display.sleep();}}shell.dispose();display.dispose();}//为每个TableItem增加Listener,当有Selection事件时,根据行和列可以定位到每一个Cell,然后就可以处理事件,//为一个Cell添加可编辑的方法是增加一个TableEditorprivate Listener listener=newListener() {privateintEDITABLECOLUMN;@OverridepublicvoidhandleEvent(Event event) {//获取鼠标点击的位置Point point =newPoint(event.x, event.y);//得到鼠标点击的行(item)TableItem item =table.getItem(point);if(item ==null) {return;}for(inti = 0; i < 4; i++) {//得到选中行(item)的每一列的矩形范围,根据鼠标点击位置point来进一步确定是哪一格(cell)Rectangle rect = item.getBounds(i);if(rect.contains(point)) {EDITABLECOLUMN= i;finalTableEditor editor =newTableEditor(table);Control oldEditor =editor.getEditor();if(oldEditor !=null){oldEditor.dispose();}//添加Text,并使高度符合item的高度finalText text =newText(table, SWT.NONE);editor.grabHorizontal=true;editor.minimumHeight= text.getSize().y;editor.minimumWidth= text.getSize().x;editor.setEditor(text, item,EDITABLECOLUMN);text.setText(item.getText(EDITABLECOLUMN));text.forceFocus();//开始编辑的事件text.addModifyListener(newModifyListener() {@OverridepublicvoidmodifyText(ModifyEvent e) {}text.setForeground(display.getSystemColor(SWT.COLOR_RED)); editor.getItem().setText(EDITABLECOLUMN,text.getText());}});//编辑后内容恢复表格前景色text.addFocusListener(newFocusAdapter() {@OverridepublicvoidfocusLost(FocusEvent e) {text.setForeground(display.getSystemColor(SWT.COLOR_BLACK));}});}}}}; publicstaticvoidmain(String[] args) {EditableTable et=newEditableTable();et.Test();}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一节:SWT/JFace简介
SWT(Standard Widget Toolkit)即标准小窗口工具箱,是IBM公司推出的一种在Eclipse
中使用的集成开发环境,SWT提供可移植的API,并与底层本机OS GUI平台紧密集成,它是一个与本地窗口系统集成在一起的小部件集和图形库。

SWT由JNI (Java Native Interface,Java 本机接口)调用操作系统的内部API,因此运行速度快,能够获得与操作系统的内部应用程序相同的外观。

JFace是一个用户界面工具箱,也是一个易用、功能强大的图形包,它简化了常见的图
形用户界面的编程任务。

SWT和JFace都是Eclipse 平台上的主要组件。

JFace是在SWT的基础上创建的,但JFace并不能完全覆盖SWT的功能,JFace和SWT的关系如图 4.1所示。

由于JFace的功能更强大,因此做图形界面开发时一般优先选用JFace
第二节:开发SWT程序
开发SWT程序之前,需要我们在工程里导入一个包,如下:
该jar包可以在XXX\eclipse\plugins目录下找到。

导入之后,即可开发SWT程序。

一个最简单的SWT程序
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
class HelloSWT {
public static void main(String[] args) {
// 创建一个display对象。

Display display = new Display();
// shell是程序的主窗体
Shell shell = new Shell(display);
// 设置shell的布局方式
shell.setLayout(null);
// 声明一个可以显示多行信息的文本框
Text hello = new Text(shell, SWT.MULTI);
// 设置主窗体的标题
shell.setText("Java应用程序");
// 设置主窗体的大小
shell.setSize(200, 100);
// 声明颜色对象
Color color = new Color(Display.getCurrent(), 255, 255, 255);
// 设置窗体的背景颜色
shell.setBackground(color);
// 设置文本框信息
hello.setText("Hello, SWT World!\n\n你好,SWT世界!");
// 打开主窗体
shell.open();
// 如果主窗体没有关闭则一直循环
while (!shell.isDisposed()) {
// 如果display不忙
if (!display.readAndDispatch()) {
display.sleep(); // 休眠
}
}
display.dispose(); // 销毁display
}
}
•Display类:是SWT应用程序中的基础类,它负责在应用程序和本地操作系统之间建立交互。

Display类是从Device继承而来。

•Display封装了对本地操作系统资源,事件和各种控件的管理,是开发SWT应用程序的基础。

•Shell 样式。

相关文档
最新文档