·容器控件具有setLayout()办法, 非容器则只要setLayoutData()办法
·GridData只能用于GridLayout规划下的组件·一个GridData只能用于一个组件·gridData.horizontalSpan = 2让一个组件占用两个列的空间·创立组件的一般形式,第一个参数指定要组件的父容器目标,第二个就是要创立组件的款式,一般都是SWT.XXXX之类的。·GridData.FILL_VERTICAL是将一切闲暇内容都填充,GridData.VERTIAL_ALIGN_FILL则是将当时规划分配的控件填充。·FormLayout跟GridLayout之间的差异在于,前者不会随容器巨细改动而改动·InputDialog有必要先创立再翻开,MessageDialog则能够调用静态办法翻开·在创立GridData的时分传给的常量参数是放在GridData里边,而不是SWT里边的
class HelloSWT { public static void main(String[] args) { Display display=new Display();//创建一个display对象。 Shell shell=new Shell(display);//shell是程序的主窗体 shell.setLayout(null); //设置shell的布局方式 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世界!");//设置文本框信息 hello.pack(); //自动调整文本框的大小 //shell.pack(); //自动调整主窗体的大小 shell.open(); //打开主窗体 while(!shell.isDisposed()){ //如果主窗体没有关闭则一直循环 if(!display.readAndDispatch()){ //如果display不忙 display.sleep(); //休眠 } } display.dispose(); //销毁display System.out.println(); } }
·经过运用emf将xml,java,uml不一样的数据模型表现形式关联起来。能够将emf当成一种“胶水”将三者结合起来
·运用emf的几个缘由:第一个就是代码生成(uml也能够用来生成代码吧,不可能是压服我运用emf的理由);第二个就是能够作为一种meta data,这个应该归于建模的领域,uml也应该有这个效果,不能成为压服我运用emf的理由;第三就是撑持序序列化和反序列化,能够依据模型界说创立的实体生成xmi文件,以及从xmi文件得到模型实体界说,这个是我所需求的,所以我要学习emf,关于配置文件修正了一通就是要导出为xml文件来保管嘛,当然如今有许多的工具包能够完结这个功用,从javabean导出xml文件,或许从xml到javabean;第四个就是作为xml,uml和java接口之间的桥梁,还有一个就是能生成用来修正model的修正器·emf和uml之间的差异:实际上emf是uml的一个简略的子集,uml比emf包括的内容更多,比方,uml除了能够描绘一个东西的布局之外还能够描绘它的行动。·EMF是MDA的一部分·EMF Core Model不只能够经过UML,XML Schema,RDB Schema以及annotated Java Interface来发作,并且能够是任何格局·ECore Model是一切metamodel的meta·Model Object承继EObject接口, EObject又承继Notifier接口·关于没有加@generated的办法,在从头生成的时分,该办法将被保存。若是自界说办法跟EMF界说的办法抵触,那么自界说办法具有优先权。若是期望EMF能对办法进行从头生成,那么给该办法名加Gen后缀即可 ·Generator Model是Core Model的一个点缀器,它封装了一些在生成关联model的信息,这些信息存储在.genmodel文件中·将generator model和core model分隔的缘由是,这样做能够使metamodel信息更独立,更简略,不必对生成逻辑形成依靠,其缺陷就是若是对core model进行了修正,那么会形成generator model无法跟core model同步,为了防止这个缺陷,generator model class供给了一些办法用来在core model发作改动的时分能对generator model进行同步更新·在emf中的Notification Observer称之为adapter,由于它不只是对状况的侦测,一起也是被调查目标行动的一种扩大。·要运用adapter对某个目标的行动进行扩大,需求运用adapter factory, adapter factory一般需求一个给定的扩大类型(extension type)来进行适配,这里的扩大类型指的是adpater所完结的某个接口,因而能够对adapter factory宣称的adapter进行外型,若是需求adapt的目标现已存在该类型的adapater那么回来改adapter,否则会新建一个。·被适配的eobject并不关怀能否被适配,这个是adapter factory的责任·EContentAdapter用于attach的EObject中包括的reference, resource发作改动时调用关联的告诉办法·ResourceSet是Resource Factory,若是在加载一个resource的时分,遇到里边的目标引证了坐落其他耐久存储文本中的目标(cross-document reference),resouceSet将经过署理目标去load引证的文档来完结加载进程,这个也称之为按需加载或许推迟加载·关于调集类型的特点来说,设置changeable为false是无效的·关于像那种特点值是经过其他特点核算得来的,能够将volatile设置为true,volatile类型的特点一起也是non-changeable类型的特点·为了差异某个特点能否需求差异没有设置和制止设置,需求运用运用unsetable来符号这个特点·关于引证来说,若是containment符号为true,那么包括的子目标将和父目标坐落同一资源文档中,containment referenece又称为by value aggregation association,这里的containment设置为true不只包括容器目标并且还包括被包括的目标·只要当reference 目标和父目标处于不一样的resource document的时分,才会运用到proxy object。·一个目标只可有一个container,若是它被增加到一个container中,那么它有必要从别的一个container中移除·当将resolveProxies 设置为false表明source和target坐落同一resource中,不需求运用proxy目标,这样能够进步功能。·若是设置为voltile,那么需求个人完结相应的get代码·经过设置changeable为false能够防止生成set办法·IEditingDomainItemProvider 用来供给command,比方增加、删去、修正