本节开始大多都是概念知识,如果要api的demo请自行上github上获取。
所谓的SWT四个模块,其实只是我为了分析和讲解swt而自己分的概念,在SWT的文档中,没有这样的说法,其主要目的是为了方便概念的引申,去更加细腻的去区分SWT的大模块。
1.widget控件
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的父容器都是固定的,而且从名字看就有迹可循
基础控件类:就是功能十分简单的控件
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布局
这个概念对不熟悉界面编程的人是比较陌生的概念,简单的说,不同的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事件的实现是由widget进行对os的调用,但是在control层,也实现了很多通用的事件类型。比如说,鼠标事件,键盘事件。所以,并不是说,你通过addXXXlistener找不到就代表没这个事件,addXXXListener只是一些通用的才有这种写法。此时可以通过addListener的api尝试。
4.系统Display
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_核心应用》说是核心,其实都是些基础的入门代码。
如果对知识点有不同意见,请留言
文章列表
===========================================================
相关推荐
在"SWT/JFace专题 --- SWT/JFace概述"中,可能涉及以下知识点: 1. SWT控件:包括Button、Text、Table、Tree、Composite等基本和复杂的控件,以及如何使用它们构建用户界面。 2. JFace数据绑定:讲解如何使用...
标题中的"swt/jface.jar"是一个关键组件,它在Java开发环境中用于构建用户界面。SWT(Standard Widget Toolkit)是IBM开发的一个开源GUI库,它提供了与原生操作系统更紧密集成的图形用户界面控件。JFace是建立在SWT...
在 SWT/Jface API 3.4 版本中,我们关注以下几个重要的知识点: 1. **SWT 基础**:SWT 是一个跨平台的 GUI 工具包,它通过直接调用操作系统原生的 API 来创建用户界面。这使得 SWT 创建的界面与操作系统风格保持...
在这个“SWT/JFACE 客户端登录窗口例子”中,我们可以预期会看到如何使用这两个库来创建一个基本的登录窗口。通常,这样的窗口会包含用户名和密码输入框,以及登录、取消等按钮。以下是一些可能涉及的知识点: 1. *...
Eclipse SWT(Standard Widget Toolkit)和JFace是Java开发中用于构建图形用户界面(GUI)的库,尤其在开发Eclipse插件和RCP(Rich Client Platform)应用程序时非常重要。这两个库提供了丰富的组件和框架,使得...
Eclipse SWT/JFace是Eclipse框架中的两个关键组件,它们为构建用户界面提供了强大的支持。SWT(Standard Widget Toolkit)是Eclipse的本机GUI库,而JFace是基于SWT构建的更高层次的抽象层,它简化了UI开发过程。 ...
本文将深入探讨这两个技术,并结合《SWT/JFace in Action》这本书的相关内容,提供一个全面的知识框架。 SWT是Java的GUI工具包,它提供了原生的控件,使得Java应用程序的用户界面可以与操作系统深度融合,从而获得...
《Eclipse SWT/Jface核心应用》全面介绍了SWT、JFace和RCP的相关知识。全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的...
SWT/JFace是Java开发图形用户界面(GUI)的两个重要库,由Eclipse基金会维护。它们被广泛用于构建桌面应用程序,尤其是与Eclipse IDE相关的项目。本学习文档旨在介绍SWT/JFace的基础知识,帮助开发者更好地理解和...
【SWT/JFace实例开发】是一份针对Java GUI编程的学习资源,主要聚焦于SWT(Standard Widget Toolkit)和JFace这两个强大的图形用户界面库。SWT是Eclipse项目的一部分,它提供了一套与操作系统直接交互的原生控件,...
在"eclipse swt/jface核心应用源代码"中,我们可以期待看到如何使用SWT和JFace来创建Eclipse插件或RCP应用的实际示例。这些源代码通常会涵盖以下关键知识点: 1. **组件创建**:如何使用SWT类创建基本的UI元素,如`...
JFace则建立在SWT之上,为SWT提供了一个更高层次的抽象。它简化了UI的构建,通过模型-视图-控制器(MVC)模式来组织代码,使界面设计更为清晰,同时提供了数据绑定、对话框、视图管理等高级功能。JFace的目的是减少...
在Eclipse SWT/JFace核心应用中,以下几个关键知识点不容忽视: 1. **组件库**:SWT提供了一整套原生GUI组件,如Button、Text、Table等,开发者可以根据需要自由组合和配置。 2. **事件处理**:SWT通过事件监听...
《Eclipse SWT/Jface核心应用》全面介绍了SWT、JFace和RCP的相关知识。全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的...
SWT (Standard Widget Toolkit) 和 JFace 是两个与Java GUI编程密切相关的库,它们是Eclipse项目的一部分。本文将深入探讨这两个库的核心概念、功能以及API的使用。 SWT是Java的一个GUI(图形用户界面)工具包,它...
### SWT/JFace中文教程知识点详解 #### 1.1 SWT/JFace概览 - **SWT与JFace的目的**:SWT(Standard Widget Toolkit)和JFace是Eclipse平台提供的两个核心工具包,用于构建高性能的图形用户界面(GUI)。SWT主要...
6. ** SWT/JFace与Eclipse RCP**:如果例子深入到Eclipse Rich Client Platform (RCP)的开发,你还将学习如何构建完整的桌面应用程序,包括插件系统、工作台管理、透视图和编辑器等。 7. **SWT/AWT/Swing的比较**:...
Eclipse SWT(Standard Widget Toolkit)和JFace是用于构建Eclipse插件和RCP(Rich Client Platform)应用程序的重要工具包。这两个库都是Eclipse IDE的一部分,提供了与操作系统底层交互的能力,使得开发者可以创建...
《Eclipse SWT/Jface核心应用》全面介绍了SWT、JFace和RCP的相关知识。全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的...