04第2章 SWT/JFace概述
- 格式:pdf
- 大小:2.57 MB
- 文档页数:20
软件开发名词解释软件配置(集成)答:设立一个有效的总控部分,它能够在各个具体工具之上,实现信息的正确传递与转换,帮助人们完成上述协调与配合的工作,从而形成一个统一的、完整的支撑环境,并通过一个统一的、友好的人机界面与用户对话。
CASE工具指“计算机辅助软件工程”或“计算机辅助系统工程”,它的基本思想与软件开发工具完全一致,即应用计算机自身处理信息的巨大能力,帮助人们开发复杂的软件或应用系统。
水波效应:因修改程序带来的连带影响。
当人们修改程序的某一处时,由于没有充分考虑到这一修改对相关部分带来的影响,结果出现了新的错误。
项目管理(Project Mangement)答:项目管理指与固定的生产线上的日常生产管理不同的,具有更大变动性、时间性的一类管理任数据字典(DataDictionary)答:数据字典是一种描述数据内容的概念模式。
它用表格形式列出数据的基本属性以及相互关系。
它的雏型是编写软件时的变量说明或标识符清单。
它也常常与其他描述工具互相补充、配合使用。
实体关系图答:实体关系图是一种用于描述静态数据的概念模式。
它以实体、关系、属性三个基本概念概括数据的基本结构。
数据流程图(DataFlowDiagram)答:数据流程图描述某一业务处理系统的信息来源、存储、处理、去向的全面情况,简明扼要地勾画全局。
项目管理答:项目管理是与固定的生产线上的日常生产管理不同的,具有更大的变动性、时间性的一类管理任务。
项目数据库答:项目数据库实际上是信息库的一个组成部分。
它记录的是项目本身进展的各种有关信息。
项目负责人应当随时掌握这些情况,一方面把住验收质量关,使每一步都扎扎实实,同时掌握全局,及时发现瓶颈环节,从组织上加以解决。
黑箱检验:输入一些信息,通过观察是否能得出预期输出来判断软件是否正确的一种软件测试方法。
黑箱检验只能证明程序有错,而不能证明程序没错。
模块的凝聚性:模块的功能在逻辑上尽可能的单一化、明确化,最好做到模块与任务的一一对应,即每个模块完成一个任务,反之每一项任务仅由一个模块来完成。
SwtJfacetableViewer⼊门教程⼆(让TableViewer按照列排序)有⼀个功能是我们常使⽤的,就是在列的头上点击⼀下,整个表的记录按照这个列来排序,再点击⼀下按照这个列的反序来排序。
那JFace是如何实现这个功能的呢?在JFace中是通过⼀个排序器来实现的,就是ViewerSorter下边写出详细的步骤⼀、定义⼀个sorter继承⾃ViewerSorterimport java.util.Date;import org.eclipse.jface.viewers.Viewer;import org.eclipse.jface.viewers.ViewerSorter;public class Sorter extends ViewerSorter {private static final int ID = 1;private static final int NAME = 2;private static final int SEX = 3;private static final int AGE = 4;private static final int CREATE_DATE = 5;public static final Sorter ID_ASC = new Sorter(ID);public static final Sorter ID_DESC = new Sorter(-ID);public static final Sorter NAME_ASC = new Sorter(NAME);public static final Sorter NAME_DESC = new Sorter(-NAME);public static final Sorter SEX_ASC = new Sorter(SEX);public static final Sorter SEX_DESC = new Sorter(-SEX);public static final Sorter AGE_ASC = new Sorter(AGE);public static final Sorter AGE_DESC = new Sorter(-AGE);public static final Sorter CREATE_DATE_ASC = new Sorter(CREATE_DATE);public static final Sorter CREATE_DATE_DESC = new Sorter(-CREATE_DATE);private int sortType ;private Sorter(int sortType){this.sortType = sortType;}public int compare(Viewer viewer, Object e1, Object e2) {People p1 = (People)e1;People p2 = (People)e2;switch(sortType){case ID:{Long l1 = p1.getId();Long l2 = p2.getId();return pareTo(l2);}case -ID:{Long l1 = p1.getId();Long l2 = p2.getId();return pareTo(l1);}case NAME:{String s1 = p1.getName();String s2 = p2.getName();return pareTo(s2);}case -NAME:{String s1 = p1.getName();String s2 = p2.getName();return pareTo(s1);}case SEX:{String s1 = p1.getSex();String s2 = p2.getSex();return pareTo(s2);}case -SEX:{String s1 = p1.getSex();String s2 = p2.getSex();return pareTo(s1);}case AGE:{Integer i1 = p1.getAge();Integer i2 = p2.getAge();return pareTo(i2);}case -AGE:{Integer i1 = p1.getAge();Integer i2 = p2.getAge();return pareTo(i1);}case CREATE_DATE:{Date d1 = p1.getCreateDate();Date d2 = p2.getCreateDate();pareTo(d2);case -CREATE_DATE:{Date d1 = p1.getCreateDate();Date d2 = p2.getCreateDate();pareTo(d1);}}return 0;}}⼆、在TableViewer上,为每⼀列加⼊事件监听器类似这样的结构newColumnTableColumn.addSelectionListener(new SelectionAdapter(){boolean asc = true;public void widgetSelected(SelectionEvent e){tableViewer.setSorter(asc?Sorter.ID_ASC:Sorter.ID_DESC);asc = !asc;}});都加⼊后TestTableViewer的结果:import org.eclipse.jface.viewers.TableViewer;import org.eclipse.swt.SWT;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import yout.FillLayout;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Table;import org.eclipse.swt.widgets.TableColumn;public class TestTableViewer {private static Table table;/*** Launch the application* @param args*/public static void main(String[] args) {final Display display = Display.getDefault();final Shell shell = new Shell();shell.setSize(500, 375);shell.setText("SWT Application");//final TableViewer tableViewer = new TableViewer(shell, SWT.CHECK|SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER|SWT.V_SCROLL|SWT.H_SCR OLL);table = tableViewer.getTable();table.setLinesVisible(true);table.setHeaderVisible(true);table.setBounds(97, 79, 373, 154);final TableColumn newColumnTableColumn = new TableColumn(table, SWT.NONE);newColumnTableColumn.setWidth(39);newColumnTableColumn.setText("ID");//加⼊事件监听器newColumnTableColumn.addSelectionListener(new SelectionAdapter(){boolean asc = true;public void widgetSelected(SelectionEvent e){tableViewer.setSorter(asc?Sorter.ID_ASC:Sorter.ID_DESC);asc = !asc;}});final TableColumn newColumnTableColumn_1 = new TableColumn(table, SWT.NONE);newColumnTableColumn_1.setWidth(85);newColumnTableColumn_1.setText("姓名");// 加⼊事件监听器newColumnTableColumn_1.addSelectionListener(new SelectionAdapter(){boolean asc = true;public void widgetSelected(SelectionEvent e){tableViewer.setSorter(asc?_ASC:_DESC);asc = !asc;}});final TableColumn newColumnTableColumn_2 = new TableColumn(table, SWT.NONE);newColumnTableColumn_2.setWidth(41);newColumnTableColumn_2.setText("性别");// 加⼊事件监听器newColumnTableColumn_2.addSelectionListener(new SelectionAdapter(){boolean asc = true;public void widgetSelected(SelectionEvent e){tableViewer.setSorter(asc?Sorter.SEX_ASC:Sorter.SEX_DESC);asc = !asc;});final TableColumn newColumnTableColumn_3 = new TableColumn(table, SWT.NONE);newColumnTableColumn_3.setWidth(43);newColumnTableColumn_3.setText("年龄");// 加⼊事件监听器newColumnTableColumn_3.addSelectionListener(new SelectionAdapter(){boolean asc = true;public void widgetSelected(SelectionEvent e){tableViewer.setSorter(asc?Sorter.AGE_ASC:Sorter.AGE_DESC);asc = !asc;}});final TableColumn newColumnTableColumn_4 = new TableColumn(table, SWT.NONE);newColumnTableColumn_4.setWidth(126);newColumnTableColumn_4.setText("创建⽇期");// 加⼊事件监听器newColumnTableColumn_4.addSelectionListener(new SelectionAdapter(){boolean asc = true;public void widgetSelected(SelectionEvent e){tableViewer.setSorter(asc?Sorter.CREATE_DATE_ASC:Sorter.CREATE_DATE_DESC);asc = !asc;}});tableViewer.setContentProvider(new ContentProvider());tableViewer.setLabelProvider(new TableLabelProvider());tableViewer.setInput(People.getPeople());shell.open();shell.setLayout(new FillLayout());yout();while (!shell.isDisposed()) {if (!display.readAndDispatch())display.sleep();}}}试⼀下结果是不是出来了?好了,最后解释⼏点:1,sorter中利⽤了jdk的compareTo来实现⽐较,当然你也可以根据⾃⼰的需求来实现。
Eclipse简介2009-03-26 13:40:29 来源:百度作者:null 编辑:nullEclipse最初是IBM的一个软件产品,前期投入了4000万美金Eclipse最初是IBM的一个软件产品,前期投入了4000万美金。
2001年11月,IBM宣布将其捐给开放源码组织。
目前Eclipse的市场占有率已经超过了Borland公司的JBuilder,成为Java开发平台中的主流。
Eclipse的设计思想是:一切皆为插件。
它自身的核心是非常小的,其它所有的功能都以插件的形式附加到该核心上。
Eclipse中三个最吸引人的地方:一是它创新性的图形API,即SWT/JFace,在此之前,我曾经用过Java 的AWT/SWING来开发Windows应用程序,AWT/SWING 其界面客观地讲不够美观,而且界面响应速度比较慢;而SWT/JFace则大大改善了Java在这方面的能力。
二是它的插件机制。
三是利用它的插件机制开发的众多功能强大的插件。
二、Eclipse平台体系结构Eclipse 平台是一个具有一组强大服务的框架,这些服务支持插件,比如Java 开发环境插件(JDT)、插件开发环境(PDE)和其他的第三方插件(New tool)。
它由几个主要的部分构成:平台运行库、工作区、工作台、团队支持和帮助。
平台运行库是内核,它在启动时检查已安装了哪些插件,并创建关于它们的注册表信息。
为降低启动时间和资源使用,它在实际需要任何插件时才加载该插件。
除了内核外,其他每样东西都是作为插件来实现的。
工作区是负责管理用户资源的插件。
这包括用户创建的项目、那些项目中的文件,以及文件变更和其他资源。
工作区还负责通知其他插件关于资源变更的信息,比如文件创建、删除或更改。
工作台为 Eclipse 提供用户界面。
它是使用标准窗口工具包(SWT)和一个更高级的API(JFace)来构建的;SWT 是 Java 的 Swing/AWT GUI API 的非标准替代者,JFace则建立在 SWT 基础上,提供用户界面组件。
第一节: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应用程序中的基础类,它负责在应用程序和本地操作系统之间建立交互。
jface selection和selectionchange -回复JFace Selection 和SelectionChange 详解JFace 是一款基于SWT(Standard Widget Toolkit)的UI工具包,用于创建丰富的Java用户界面。
在JFace中,Selection 和SelectionChange 是两个重要的概念,它们在处理用户交互和数据处理方面起着关键的作用。
本文将深入探讨这两个概念,介绍它们的含义、用法和相关API。
首先,我们来了解一下Selection的概念。
在JFace中,Selection代表用户在UI界面上选择/点击的一个或多个项目。
这些项目可以是列表中的一行、表格中的一列、树状结构中的一个节点,或者任何其他具有选择性质的UI元素。
Selection 可以有多个选择项,也可以只有一个选择项。
对于Selection 来说,JFace 提供了一个核心的接口ISelection,以及一些实现了这个接口的具体类。
ISelection接口定义了Selection的基本行为,如获取选择项数目、获取指定位置的选择项等。
而具体的实现类,如StructuredSelection、TreeSelection 等,提供了一些便捷的方法和数据结构来处理实际的选择项。
接下来,我们来看一下SelectionChange 的概念。
SelectionChange 表示在UI界面上Selection发生变化的事件。
当用户改变选择项时,SelectionChange事件被触发,应用程序可以监听这个事件来做相应的处理。
SelectionChange一般是由用户交互引起的,比如点击一个按钮、选择一个选项等。
在JFace中,SelectionChange 通过ISelectionChangedListener 接口来处理。
ISelectionChangedListener 定义了SelectionChange 事件回调的方法,应用程序可以实现这个接口,并注册到对应的UI组件上,以便在SelectionChange事件发生时进行响应。
SWT/Jface :Standard Widget Toolkit的缩写优点:风格与本机保持一致Jface是SWT的扩展包,采用MVC的设计AWT/SWING:是Java的标准图形API,响应速度慢,界面风格不符合Windows用户的审美习惯RCP:(Rich Cllient Platform)是一个在Eclipse3.0之后分离出来的一个平台SWT组件常用的方法:以button为例:setText(String string) : 设置组件的标签文字setToolTipText(String string) 设置鼠标停留在组件上时,出现的黄色提示条中的文字setBounds(int x, int y, int width, int height);设置坐标位置和大小(x轴坐标,y轴坐标,按钮宽度,按钮长度)setLocation(int x,int y)用于在屏幕上定位组件,和setBounds方法类似setEnabled(boolean enabled); 设置组件是否可用setVisible(boolean visible); 设置组件隐藏/显示setSelection(boolean selected);设置是否选上setAlignment(int alignment);设置标签文字的对齐方式setForeground(Color color);; 设置前景色okButton.setBackground(Display.getDefault().getSystemColor(SWT.CO LOR_BLUE));//设置背景色setImage(Image image);//设置显示的图片setBackgroundImage(Image image);设置背景图片setFont(Font font);设置文字的字体setData(Object data);//用来在SWT组件挂起数据,getData取出挂接的数据setData(String key, Object value);按key挂接数据。
JAVA.SWTJFace:SWT高级控件之SWT系统资源JAVA.SWT/JFace: SWT高级控件之SWT系统资源2010年08月05日星期四 22:15《Eclipse SWT/JFACE 核心应用》清华大学出版社 12 SWT系统资源系统资源包括颜色(Color)、字体(Font)、光标(Cursor)、图像(Image)等,对于这些本地系统资源,在使用后一定要释放掉,否则会严重影响系统的整体性能。
12.1 系统资源概述系统资源一般是指颜色(Color)、字体(Font)、光标(Cursor)、图像(Image)等,SWT中创建的各种控件也属于系统资源。
当在SWT中创建了系统资源,那么也就创建了对应的本地资源。
下面这种方式创建的资源必须释放:// 创建红色对象Color color = new Color(diaplay, 255, 0, 0);// 使用完时释放color.dispose();下面这种方式获取的资源不需释放:// 获得系统中的红色对象Color color = display.getSystemColor(SWT.COLOR_RED);因为这种方式是从底层平台获得的颜色资源,这个资源不是我们自己创建的,只是被我们引用了,其他的对象有可能正在使用或者将要使用这个资源,释放这样的资源会带来不可预知的严重后果。
JAVA的垃圾回收只能回收Java虚拟机中的对象,而对本地操作系统的对象是不能够自动释放的,所以对本地资源的释放一定要显式的释放掉。
释放资源的原则1. 通过new创建的资源一定要显式的释放。
2. 释放了父控件也就释放了子控件。
例如窗口(Shell)对象中有一个按钮(Button),释放Shell时该Button也隐式的释放了。
该规则只适用于Widget的子类。
如果程序中使用了字体、颜色、图像、图标等系统资源,扔需要在程序中显示的dispose()掉。
3. 释放了控件也就释放了控件所设置的菜单。
第4章SWT图形用户界面本章要点1.SWT程序开发步骤。
2.SWT常用组件的使用。
3.SWT的布局。
4.SWT的事件处理。
5.SWT Designe r简介。
本章难点1.SWT常用组件的使用。
2.SWT的布局。
3.SWT的事件处理。
4.1SWT/JFace简介SWT(Standard Widget T oolkit)即标准小窗口工具箱,是IBM公司推出的一种在Eclipse中使用的集成开发环境,SWT提供可移植的A PI,并与底层本机O S GUI平台紧密集成,它是一个与本地窗口系统集成在一起的小部件集和图形库。
SWT由JNI(Java NativeInterface,Java本机接口)调用操作系统的内部API,因此运行速度快,能够获得与操作系统的内部应用程序相同的外观。
JFace是一个用户界面工具箱,也是一个易用、功能强大的图形包,它简化了常见的图形用户界面的编程任务。
SWT和JFa ce都是Eclipse平台上的主要组件。
JFace是在S WT的基础上创建的,但JFace并不能完全覆盖S WT的功能,JFace和S W T的关系如图4.1所示。
由于JFace的功能更强大,因此做图形界面开发时一般优先选用JFa ce。
图4.1 JFace和S W T的关系4.1.1 SWT程序开发步骤在eclipse的plugi ns目录下,找到文件org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar,文件名中中3.2.1是eclip se的版本号,v3235是S W T的序列号,不同的ecli pse版本这两个数字也不同。
在DOS状态下,用jar命令将该文件解压,命令格式如下:jar xf org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar该命令将指定的文件org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar解压到当前目录下。
SWT/JFace常用组件1按钮组件(Button)(1)Button组件常用样式SWT.PUSH按钮SWT.CHECK多选按钮SWT.RADIO单选按钮SWT.ARROW箭头按钮SWT.NONE默认按钮SWT.CENTER文字居中与SWT.NONESWT.LEFT左对齐SWT.RIGHT右对齐SWT.BORDER深陷型按钮SWT.FLAT平面型按钮一个Button可以指定多个样式,只要将指定的各个样式用符号“|”连接起来即可Button bt=new Button(shell,SWT.CHECK|SWT.BORDER|SWT.LEFT);多选、深陷、左对齐(2)Button组件的常用方法setText(String string),设置组件的标签文字setBounds(int x,int y,int width,int height);//设置组件的坐标位置和大小setEnabled(Boolean enabled);设置组件是否可用,默认为truesetFont(Font font);设置文字的字体setForeground(Color color);设置前景色setBackground(Color color);设置背景色setImage(Image image);设置显示用的图片setSelection(Boolean selected);设置是否选中,默认为falsesetToolTipText(String string);设置鼠标停留在组件上是显示的提示信息2标签组件(Label)(1)Label常见式样SWT.CENTER 居中SWT.RIGHT 右对齐SWT.LEFT 左对齐SWT.NONE 默认样式SWT.WRAP 自动换行SWT.BORDER 深陷型SWT.SEPARATOR 分栏符,默认为竖线分栏符HORIZONTAL 横线分栏符3文本框组件(Text)(1)Text常见式样SWT.NONE 默认式样SWT.CENTERSWT.RIGHTSWT.LEFTSWT.MULTI 可以输入多行,需回车换行SWT.WRAP 可以输入多行,自动换行SWT.PASSWORD 密码型,输入字符显示成“*”SWT.BORDER 深陷型SWT.V_SCROLL 垂直滚动条SWT.H_SCROLL 水平滚动条4下拉框组件(Combo)(1)Combo常见样式SWT.NONE 默认SWT.READ_ONLY 只读SWT.SIMPLE 无需单击下拉框,列表会一直显示(2)Combo下拉框常用方法add(String string) 在Combo上添加一项add(String string,int index) 在Combo的第index(从0开始)项后插入一项deselectAll() 使Combo组件中的当前选项为空removeAll() 将Combo中的所有选项清空setItems(String[] items) 将数组中的各项依次加入到Combo中select(int index) 将Combo的第index+1项设置为当前选择项5列表框组件(List)(1)List常见样式SWT.NONE 默认样式SWT.V_SCROLL 带垂直滚动条SWT.MULTI 允许复选SWT.SINGLE 允许单选(2)常用方法List和Combo组件的方法是一样的,但由于List可选择多项,而Combo只能选择一项,所以List没有getText()方法,List的取值使用getSelection(),返回一个String数组。
Eclipse开发经典教程:SWT-JFace开发入门从eclipse开发到开发eclipse-系列专栏【IT168 技术文档】Eclipse 是一个通用工具平台。
它是一个开放的、可用于任何东西的可扩展 IDE,它为工具开发人员提供了灵活性以及对软件技术的控制能力。
Eclipse 为开发人员提供了生产大量 GUI 驱动的工具和应用程序的基础。
而这项功能的基础就是基于GUI库的SWT 和 JFace。
SWT(Standard Widget Toolkit)本身仅仅是Eclipse组织为了开发Eclipse IDE 环境所编写的一组底层图形界面 API。
或许是无心插柳,或许是有意为之,至今为止,SWT无论在性能上还是外观上,都超越了Sun公司提供的AWT和Swing。
概述SWT(Standard Widget Toolkit)是Eclipse中的窗口小部件工具箱,它是一组窗口组件的实现,并能底层操作系统图形用户界面平台紧密集成。
另外,SWT定义了所有受支持平台上的公共可移植API,并尽可能地使用本机窗口小部件在每个平台上实现该API,这允许SWT在所有平台上维护一致的编程模型,且能立即反映底层操作系统图形用户界面外观中的任何更改。
JFace用来在 SWT 库顶部提供常见的应用程序用户界面功能。
JFace并不试图“隐藏”SWT 或者替换它的功能。
它提供一些类和接口,用来处理SWT对动态用户界面相关联的常见任务。
SWT/JFace是Eclispe的基础,Eclipse的Workbench就是建立在SWT/JFace之上的。
另外,JFace是在SWT之上开发的,它和SWT形成一个交集,其中SWT提供最原始的组件,如图1所示。
图1 SWT/JFace和Workbench的关系JFace对SWT进行了扩展,把用户熟悉的一些组件进行了封装,在开发中用户可以尽可能地用JFace组件来开发自己的应用。
JFace程序和SWT程序类似,只不过JFace把常用的功能进行了提炼,使用户不必太关心SWT的一些细节。
SWOTSWOT(Strengths Weakness Opportunity Threats)分析法,又称为态势分析法或优劣势分析法,用来确定企业自身的竞争优势(strength)、竞争劣势(weakness)、机会(opportunity)和威胁(threat),从而将公司的战略与公司内部资源、外部环境可以有机地结合起来。
EMBA、MBA等主流商管教育均将SWOT分析法作为一种常用的战略规划工具包含在内。
1 基本简介所谓SWOT分析,即基于内外部竞争环境和竞争条件下的态势分析,就是将与研究对象密切相关的各种主要内部优势、劣势和外部的机会和威胁等,通过调查列举出来,并依照矩阵形式排列,然后用系统分析的思想,把各种因素相互匹配起来加以分析,从中得出一系列相应的结论,而结论通常带有一定的决策性。
SWOT分析方法运用这种方法,可以对研究对象所处的情景进行全面、系统、准确的研究,从而根据研究结果制定相应的发展战略、计划以及对策等。
S (strengths)、W (weaknesses)是内部因素,O (opportunities)、T (threats) 是外部因素。
按照企业竞争战略的完整概念,战略应是一个企业“能够做的”(即组织的强项和弱项)和“可能做的”(即环境的机会和威胁)之间的有机组合。
SWOT分析方法从某种意义上来说隶属于企业内部分析方法,即根据企业自身的既定内在条件进行分析。
SWOT分析有其形成的基础。
著名的竞争战略专家迈克尔.波特提出的竞争理论从产业结构入手对一个企业“可能做的”方面进行了透彻的分析和说明,而能力学派管理学家则运用价值链解构企业的价值创造过程,注重对公司的资源和能力的分析。
SWOT分析,就是在综合了前面两者的基础上,以资源学派学者为代表,将公司的内部分析(即20世纪80年代中期管理学界权威们所关注的研究取向,以能力学派为代表)与产业竞争环境的外部分析(即更早期战略研究所关注的中心主题,以安德鲁斯与迈克尔.波特为代表)结合起来,形成了自己结构化的平衡系统分析体系。
第一章SWT和JFace概览_1本章涵盖内容■ SWT和JFace的目的■ 它们形成的理由■ 这两个类库如何区别于Swing■ 许可证和平台支持在2004年三月,Java开发者年度大会宣布了由其读者选择的最佳Java组件年度奖结果,超过15,000位开发者投票选举诸多Java工具套件(当然包括不少声名显赫的供应商如Oracle和Apple等)之一。
但最终,Eclipse的标准小部件工具套件轻易地击败诸多强手,如同其在2003年一样赢得了年度最佳。
虽然Eclipse是Java开发领域的迟到者,但其同样在JavaWorld, JavaPro和LinuxWorld社区获得了荣耀。
一路而来如潮的掌声和好评彰显了Eclipse对于Java开发的巨大冲击和影响。
在过去的每一天,全球的Java 开发者们不断被SWT和JFace强劲的功能和部署新插件和独立应用程序的能力所折服。
本书的主旨就是在于向你展示这一功能套件的功效和你如何将其应用于你现成的项目之中去。
需要指出的是:■ 开发基于SWT/JFace的应用程序■ 用SWT内置的图形语义环境生成定制化图形■ 理解SWT和JFace后面的结构和方法论■ 开阔你的GUI设计的知识面■ 构建和部署Eclipse的SWT和JFace应用程序或独立应用程序最重要的是GUI开发应当是一项充满乐趣的工作!没有一个编程工作能给你这样子的快感。
因此,我们将SWT和JFace的理论用实例代码贯穿始终来显示GUI开发实践。
但在开始之前,我们需要向您简要阐明该技术是什么和它能帮你作什么。
1.1 什么是SWT/JFace?虽然我们都知道SWT和JFace是工具(套件),但更科学地讲它们是软件类库。
它们由包含java类和接口的文件包组成。
但又是什么使得这些组件能让你任意组合GUI呢?你的应用程序可以快速运行,高效运用计算机内存并有着和操作系统界面相同的界面体验,没有其他的GUI构建体系可以如此。
SWT简介SWT简介从Java诞生至今,已经在太多的领域取得成功,然而它却很少在图形界面程序上崭露头角。
究其原因,Java语言缺省的图形界面开发包AWT和SWING实在是难脱其究,无论速度和外观,它们都难以让人接受。
如今,Eclipse组织编写的SWT开发包,为Java程序员提供了AWT和SWING之外的一个更佳的选择。
在本文中,对SWT做了简单但尽可能全面的介绍。
Java语言的声望和它在桌面应用程序(GUI程序)所取得的成就显然极不相符,至今仍然很少能看到非常成功Java桌面程序。
虽然有JBuilder,Netbean,JProbe等大型软件作为代表,但这仍不能证明Java的GUI程序是成功的:它们的外观总是和同一操作系统平台下的其它软件显得格格不入。
对机器配置的需求也似乎永无止境,这使得它们只能被一些总是拥有当前最高性能PC的程序员们所容忍,或是那些不在乎金钱和时间的专业用户所接受。
对绝大多数计算机使用者来说,AWT或SWING代表着怪异的界面和无法接受的速度。
Standard Widget Toolkit(SWT)或许是Java这一噩梦的终结者,广大Java程序员终于可以开发出高效率的GUI程序,它们拥有标准的外观,几乎没有人能看出你的程序是用Java写出来的,更为重要的是,这些程序是跨平台的。
SWT本身仅仅是Eclipse组织为了开发Eclipse IDE环境所编写的一组底层图形界面API。
或许是无心插柳,或是有意为之,至今为止,SWT无论是在性能和外观上,都超越了SUN公司提供的AWT和SWING。
目前Eclipse IDE已经开发到了2.1版本,SWT已经十分稳定。
这里指的稳定应该包含两层意思:一是指性能上的稳定,其中的关键是源于SWT的设计理念。
SWT 最大化了操作系统的图形构件API,就是说只要操作系统提供了相应图形的构件,那么SWT只是简单应用JNI技术调用它们,只有那些操作系统中不提供的构件,SWT才自己去做一个模拟的实现。