欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SWT/JFACE/RCP 入门三:SWT四个模块

程序员文章站 2022-05-18 09:46:08
...

本节开始大多都是概念知识,如果要api的demo请自行上github上获取。

 

所谓的SWT四个模块,其实只是我为了分析和讲解swt而自己分的概念,在SWT的文档中,没有这样的说法,其主要目的是为了方便概念的引申,去更加细腻的去区分SWT的大模块。
SWT/JFACE/RCP 入门三:SWT四个模块
            
    
    博客分类: SWT/JFACE/RCP SWTJFACERCP
 

 

1.widget控件


SWT/JFACE/RCP 入门三:SWT四个模块
            
    
    博客分类: SWT/JFACE/RCP SWTJFACERCP
 

Widget类:是所有控件的基类,该类实现了很多基础功能,比如在上一节讲的checkWidget就是在这里实现的,还有很多常用功能,比如setData,addListener,removeListener,更重要的是,这个类有很多本地方法,用来进行和os的交互,比如控件的生成和事件的传递。源码其实并不是很深,但里面有很多本地方法,需要查看swt的dll文件,而且对工作的帮助并不是很大,所以点到为止

 

composite容器类型:关于容器的概念,在上一节已经讲解过了,这里主要讲解下常用实现类的功能

CCombo,Combo:下拉菜单(可实现的界面效果一样,但CCombo的功能稍微多一点点)

CoolBar:可移动的工具栏

ToolBar:工具栏

CTabFolder,TabFolder:标签选择器(可实现的界面效果一样,但CTabFolder的功能稍微多一点点)

ScrolledComposite:有滚动条的面板

Table:表格

Tree:树形列表

ExpandBar:可展开,收缩的菜单栏

Browser:浏览器控件,可以用browser做成桌面软件内嵌H5的方式。

SashForm:可设置比例,且在容器范围内可*调大子控件大小的容器类

Group:左上角有个文本的容器类

 

Item类型:条目,是用于组成一些现成容器的元素,如tabItem就是用来组成tabFolder,tableItem就是为了组成table,ToolItem组成toolBar,item的父容器都是固定的,而且从名字看就有迹可循


SWT/JFACE/RCP 入门三:SWT四个模块
            
    
    博客分类: SWT/JFACE/RCP SWTJFACERCP
 

 

基础控件类:就是功能十分简单的控件

Button:按钮

Label:静态文本框

Link:超链接文本框

Text:文本框

List:列表菜单

ProgressBar:进度条

 

控件中一些常用的api,以shell为例子:

shell.setSize(300, 400);                                  //设置窗体尺寸    					
shell.setText("hello 讯讯");                              //设置窗体标题    					
shell.setBackground(new Color(null, 0, 0, 0));            //设置背景颜色,为黑色    			
shell.setData("key", "value");                            //设置一个缓存数据,内置一个hashMap	
shell.setToolTipText("this is tip");                      //设置悬浮提示    					
shell.setEnabled(true);                                   //设置是否可点击   					
shell.setVisible(true);                                   //设置可显示 						
shell.setLayoutData(new GridData());                      //作为子控件时,设置布局数据 		
shell.setLayout(new FillLayout());                        //设置充满式布    					
shell.setFont(new Font(null, "微软雅黑", 12,SWT.BOLD));   //设置文字风格    					
shell.setMenu(new Menu(shell));                           //设置菜单  	

 

 

2.Layout布局


SWT/JFACE/RCP 入门三:SWT四个模块
            
    
    博客分类: SWT/JFACE/RCP SWTJFACERCP
 

这个概念对不熟悉界面编程的人是比较陌生的概念,简单的说,不同的layout对应着不同的布局算法,举个例子,GridLayout gl = new GridLayout(3, true);表示新建一个网格布局,使用了此布局的面板控件,将水平分成均等的3份,且自己大小的size的变化,也会影响到内部子控件的大小。特别需要掌握好GridLayout和GridData两个类,API说明请查看github

 

Layout中的注意事项:

A.如果没有特殊的设置,一般情况下,子控件的大小是会因为父控件的大小产生变化。但到了不能再小的时候,子控件将不会进行缩放,以保证区域显示元素的完整,当然很多时候,控件也是需要设置特定的size

B.子控件的坐标是相对于父控件而言的,而并不是相对于整个屏幕的,如果需要转换,需要调用.toDisplay(0, 0)的API进行转换。

C.如果,中途改变了layout,又或者修改了子控件的大小,或者数量,一定要调用composite中的layout()

 

 

 

3.Listener事件

 


SWT/JFACE/RCP 入门三:SWT四个模块
            
    
    博客分类: SWT/JFACE/RCP SWTJFACERCP
 

事件机制其实和一般的语言的事件都是一样的,监听之后进行反应的处理。swt事件的实现是由widget进行对os的调用,但是在control层,也实现了很多通用的事件类型。比如说,鼠标事件,键盘事件。所以,并不是说,你通过addXXXlistener找不到就代表没这个事件,addXXXListener只是一些通用的才有这种写法。此时可以通过addListener的api尝试。

 

 

4.系统Display


SWT/JFACE/RCP 入门三:SWT四个模块
            
    
    博客分类: SWT/JFACE/RCP SWTJFACERCP
 

Display的常用API:

Display.getDefault().asyncExec(runnable);//ui异步线程更新,不会阻塞,常用
Display.getDefault().syncExec(runnable);//ui线程同步执行,会阻塞现行的ui线程
Display.getDefault().getBounds();//获取显示器区域,
Display.getDefault().getActiveShell();//获取当前活动的shell
Display.getDefault().getShells();//获取shell数组
Display.getDefault().getFocusControl();//获取焦点控件
Display.getDefault().getCursorControl();//获取光标控件

 

其实关于display的概念,在上一节已经讲得差不多了,就是一个运行环境+系统桥梁+ui线程。

 

 

下一节,主要讲Jface的概念。

 

 

 

SWT部分在这里已经讲完,基本是理清概念,还是那句,如果需要详细的api的讲解,可以查看电子书,因为在以前的入门经验中,我仔细敲了很多代码,但并不知道我敲的是什么,而且很多的类和api,在实际工作中,从来没用到过。而在我司培训到工作的流程中,并不可能有这样的时间给你慢慢适应,先有一个总体的概念是十分重要的,这是快速入手的基础,而不是一上来就告诉你代码该怎么写,一锅炖。然后在实际的工作中,积累和运用。多写,但在写的基础上,一定要把只是归类到自己的知识体系中。这些PPT都是我自己的工作经验和知识运用做出来的,虽然并不是十分的严谨,但我觉得能让人了解事实的本质即可,不想抠太多的细节。

 

 

===========================================================

我会在github上将控件的demo代码逐一补充,有需要的同学请标个星,将不断更新DEMO。技术讨论:5222041

https://github.com/JavaRui/com.eshinetech.rcp.training.git

demo将持续更新。需要群讨论,可以到第一节查看前言。

如果想查看各种控件的使用,可以下载电子书《Eclipse_Swt_Jface_核心应用》说是核心,其实都是些基础的入门代码。

如果对知识点有不同意见,请留言

文章列表

 

 

http://1299020954.iteye.com/

===========================================================

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • SWT/JFACE/RCP 入门三:SWT四个模块
            
    
    博客分类: SWT/JFACE/RCP SWTJFACERCP
  • 大小: 284.1 KB
  • SWT/JFACE/RCP 入门三:SWT四个模块
            
    
    博客分类: SWT/JFACE/RCP SWTJFACERCP
  • 大小: 297.3 KB
  • SWT/JFACE/RCP 入门三:SWT四个模块
            
    
    博客分类: SWT/JFACE/RCP SWTJFACERCP
  • 大小: 235.2 KB
  • SWT/JFACE/RCP 入门三:SWT四个模块
            
    
    博客分类: SWT/JFACE/RCP SWTJFACERCP
  • 大小: 226.5 KB
  • SWT/JFACE/RCP 入门三:SWT四个模块
            
    
    博客分类: SWT/JFACE/RCP SWTJFACERCP
  • 大小: 230.4 KB
  • SWT/JFACE/RCP 入门三:SWT四个模块
            
    
    博客分类: SWT/JFACE/RCP SWTJFACERCP
  • 大小: 235.1 KB
相关标签: SWT JFACE RCP