- 浏览: 1149393 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
1,简单显示,表格的式样见注释中的内容
- import org.eclipse.jface.viewers.TableViewer;
- import org.eclipse.swt.SWT;
- 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" );
- //注意这里,SWT.NULTI代表可以选择多行,SWT.FULL_SELECTION代表可以整行选择,SWT.BORDER边框,SWT.V_SCROLL ,SWT.H_SCROLL滚动条
- final TableViewer tableViewer = new TableViewer(shell, SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER|SWT.V_SCROLL|SWT.H_SCROLL);
- 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" );
- final TableColumn newColumnTableColumn_1 = new TableColumn(table, SWT.NONE);
- newColumnTableColumn_1.setWidth(85 );
- newColumnTableColumn_1.setText("姓名" );
- final TableColumn newColumnTableColumn_2 = new TableColumn(table, SWT.NONE);
- newColumnTableColumn_2.setWidth(41 );
- newColumnTableColumn_2.setText("性别" );
- final TableColumn newColumnTableColumn_3 = new TableColumn(table, SWT.NONE);
- newColumnTableColumn_3.setWidth(43 );
- newColumnTableColumn_3.setText("年龄" );
- final TableColumn newColumnTableColumn_4 = new TableColumn(table, SWT.NONE);
- newColumnTableColumn_4.setWidth(126 );
- newColumnTableColumn_4.setText("创建日期" );
- shell.open();
- while (!shell.isDisposed()) {
- if (!display.readAndDispatch())
- display.sleep();
- }
- }
- }
2,加入布局
显示的效果不好,我们要加入布局,让view填充整个画面在shell.open()后加上
ok,效果达到
3,为TableViewer加上数据,光突突的样子不好看。这里是demo所以不再从数据库里边取数据了。自己构造一个List用来做数据。实际使用中也是这么使用,不过不同的是这里是随意构造的list,而显示实际使用中是从数据库取出数据构造list.
(1)构造一个people类,同时给People类提供一个构造假数据的方法getPeople()
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- public class People{
- private Long id;
- private String name;
- private String sex;
- private Integer age;
- private Date createDate;
- public People(Long id,String name,String sex,Integer age,Date createDate){
- this .id = id;
- this .name = name;
- this .sex = sex;
- this .age = age;
- this .createDate = createDate;
- }
- public Integer getAge() {
- return age;
- }
- public void setAge(Integer age) {
- this .age = age;
- }
- public Date getCreateDate() {
- return createDate;
- }
- public void setCreateDate(Date createDate) {
- this .createDate = createDate;
- }
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this .id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this .name = name;
- }
- public String getSex() {
- return sex;
- }
- public void setSex(String sex) {
- this .sex = sex;
- }
- public static List getPeople(){
- List list = new ArrayList();
- int n = 30 ;
- for ( int i= 1 ;i<n;i++){
- Long id = new Long(i);
- String name = "张" +i;
- String sex = "男" ;
- if ((i% 2 ) == 0 ){
- sex = "女" ;
- }
- Integer age;
- if (i< 10 ){
- age = new Integer(i* 10 );
- }else if (i> 10 && i< 100 ){
- age = new Integer(i);
- }else if (i> 100 && i< 1000 ){
- age = new Integer(i/ 10 );
- }else {
- age = new Integer( 22 );
- }
- Date createDate = new Date();
- People people = new People(id,name,sex,age,createDate);
- list.add(people);
- }
- return list;
- }
- }
(2)给tableViewer提供内容器(IStructuredContentPorvider)和标签器(ITableLabelProvider)
如
果想一个tableviewer显示数据,那必须给它提供内容器和标签器,内容器的作用是从List(也可以是其他的集合类)中提取出一个对象(例如
People对应着表格的一行,数据库的一条记录),标签器的作用是从一个对象中提取出一个字段(例如年龄,对应着表格中的一个单元格,数据库中某一列的
一个值)下边是内容器和标签器的代码:
内容器:
- import java.util.List;
- import org.eclipse.jface.viewers.IStructuredContentProvider;
- import org.eclipse.jface.viewers.Viewer;
- public class ContentProvider implements IStructuredContentProvider {
- public Object[] getElements(Object inputElement) {
- if (inputElement instanceof List){
- return ((List)inputElement).toArray();
- }else {
- return new Object[ 0 ];
- }
- }
- public void dispose() {
- }
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
- }
标签器:
- import java.text.SimpleDateFormat;
- import org.eclipse.jface.viewers.ITableLabelProvider;
- import org.eclipse.jface.viewers.LabelProvider;
- import org.eclipse.swt.graphics.Image;
- public class TableLabelProvider extends LabelProvider implements ITableLabelProvider {
- public String getColumnText(Object element, int columnIndex) {
- if (element instanceof People){
- People p = (People)element;
- if (columnIndex == 0 ){
- return p.getId().toString();
- }else if (columnIndex == 1 ){
- return p.getName();
- }else if (columnIndex == 2 ){
- return p.getSex();
- }else if (columnIndex == 3 ){
- return p.getAge().toString();
- }else if (columnIndex == 4 ){
- SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );
- return sdf.format(p.getCreateDate());
- }
- }
- return null ;
- }
- public Image getColumnImage(Object element, int columnIndex) {
- return null ;
- }
- }
注意这里:extends LabelProvider,为什么要加这个呢? 因为如果不加这个,因为实现 ITableLabelProvider 的缘故我们还要写四个空函数,而我们本身不需要在这四个空函数中实现什么,所以让它继承自LabelProvider,就可以避免四个空函数。
(3)把标签器和内容器给tableviewer
在shell.open()前边加上这几行
- //设置内容器
- tableViewer.setContentProvider(new ContentProvider());
- //设置标签器
- tableViewer.setLabelProvider(new TableLabelProvider());
- //把数据集合给tableView
- tableViewer.setInput(People.getPeople());
- //这样利用内容器和标签器就能从setInput得到的数据集合分解出显示表格需要的数据。这是一个典型的mvc的实现.
4,样式改变
如果想在每一列前加入一个checkbox
只需要在开始的式样中加入SWT.CHECK
- jface-1.rar (7 KB)
- 下载次数: 9
发表评论
-
RCP开发者的好去处之ICON系列(持续更新中... ...)
2012-03-31 10:13 1121为了找个合适的图片是不是头大的不像样子了?OK,我现在就 ... -
RAP 整合 Spring (基于 Spring-osgi )
2012-03-31 10:12 1384RAP 介绍请见: http://www.eclipse. ... -
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
2012-03-25 14:50 1460引用 在rcp的路径添加了mysql驱动,并添加之cla ... -
解决JFace Dialog中ScrollComposite无法滚动
2012-03-26 10:26 1588今天写了一个Jface的dialog,作为配置界面,其中有 ... -
SWT实现弹出日历控件
2012-03-27 08:00 2579实现像网页上的那种用户单击一个Text框然后框下面出现一个日历 ... -
JFace进度条
2012-03-27 08:01 1111Java代码 someB ... -
getConfigurationElementsFor 无法获得扩展点的信息
2012-03-26 10:27 1092做项目的时候RCP程序在eclipse调试环境下面运行正常 ... -
测试rcp 和 rap 何时触发 组建.addListener(SWT.xxx, new Listener() )的方法
2012-02-24 14:22 1278Java代码 直接通过反射让组建监 ... -
RAP 界面显示不完全的问题
2012-02-24 14:22 1235rap运行第一刷新界面总是刷新不完整,组件错位,后台报Layo ... -
Uploading files with RAP 1.4
2012-02-17 11:37 1615One of the new things in RAP 1. ... -
【RAP】CAS PIA 快速浏览入口地址
2012-02-07 08:23 1235下面的链接是访问RAP应用的入口。有2中方式,图片上已经注明。 ... -
RAP 与 RCP的区别
2012-02-07 08:23 1322RAP 可以让开发人员使用 JAVA API 和按照 E ... -
将Eclipse RAP部署到Tomcat中
2012-02-07 08:23 1137在上次成功将我的RCP项目迁移到浏览器中运行后,开始研究 ... -
RAP(Rich AJAX Platform)的可部署文件下载
2012-02-07 08:24 1137这是我自己做的RAP的可部署文件,可以下载下来解压到Tom ... -
Eclipse rcp/rap 开发经验总结(15) -rap如何使用js
2012-02-03 08:11 14411. 把输入的字符串当 javascript 执行 ... -
Eclipse rcp/rap 开发经验总结(14) -rap 图片、数据缓存处理
2012-02-03 08:10 1505一、概述 在进行了 rap 的基本学习之后,您对 rap ... -
Eclipse rcp/rap 开发经验总结(13) -Rap/Rcp保存按钮处理方式
2012-02-03 08:10 1078一、概述 在做项目的过程中,处理编辑区的保存机制的时候。发 ... -
Eclipse rcp/rap 开发经验总结(12) -Rap 优化之组件的销毁
2012-02-03 08:10 865一、概述 经过几个月的rap 项目实战,总结了一些小 ... -
Eclipse rcp/rap 开发经验总结(11) -rcp/rap与spring ibatis集成
2012-02-03 08:10 13081. rcp/rap 与 spring 集成 Activa ... -
Eclipse rcp/rap 开发经验总结(10) -Rap不同系统间的差异和处理方式
2012-02-01 08:01 1396平常进行 rap 程序开发一般都是在 win ...
相关推荐
在本文中,我们将深入探讨如何使用Swt/Jface库中的`TableViewer`组件来创建一个功能丰富的表格,并实现用户可以直接在表格上编辑数据的功能。Swt/Jface是Eclipse平台的一部分,提供了一套用于构建图形用户界面(GUI...
本篇文章将聚焦于SWT/JFace中的tableViewer组件的开发与简化。 首先,`tableViewer`是JFace库中用于展示表格数据的核心组件。它为开发者提供了一种方便的方式来显示和操作数据,同时处理了诸如排序、过滤等复杂功能...
【SWT/JFace从入门到精通】 SWT(Standard Widget Toolkit)和JFace是Eclipse平台下用于构建图形用户界面(GUI)的两个关键库。它们为Java开发者提供了丰富的控件和高级UI功能,使创建桌面应用程序变得简单而强大。...
JFace 建立在SWT之上,提供了一层抽象,简化了GUI开发的复杂性。JFace的目标是通过提供数据绑定、视图模型、对话框和服务等高级构造,来提高开发者的生产力。例如,它使用模型-视图-控制器(MVC)架构,将数据管理与...
SWT 是一个直接与操作系统进行交互的底层库,提供了丰富的控件和组件,而 JFace 建立在 SWT 之上,提供了一层抽象,简化了 GUI 的设计和实现,使其更易于管理和维护。 在 SWT/Jface API 3.4 版本中,我们关注以下几...
5. 表格和树的模型(Table and Tree Models):SWT和JFace提供了处理表格和树数据的类,如`TableViewer`和`TreeViewer`,它们支持数据的过滤、排序和分页。 6. 事件处理(Event Handling):SWT和JFace使用监听器...
SWT是底层的UI库,提供了与操作系统原生控件直接交互的能力,而JFace是在SWT基础上提供的一层抽象,简化了UI开发并引入了模型-视图-控制器(MVC)设计模式。 **SWT API** SWT是IBM开发的一个轻量级GUI库,它直接与...
SWT (Standard Widget Toolkit) 和 JFace 是两个与Java GUI编程密切相关的库,它们是Eclipse项目的一部分。本文将深入探讨这两个库的核心概念、功能以及API的使用。 SWT是Java的一个GUI(图形用户界面)工具包,它...
其次,JFace是在SWT基础上构建的一层抽象,它简化了SWT的使用,提供了一种面向对象的API,使得开发人员可以更加专注于业务逻辑,而不是底层的GUI细节。JFace包括数据绑定、视图管理、对话框和服务等组件,它将许多...
SWT是Eclipse项目提供的一种用于创建本地化图形用户界面(GUI)的开源库,而JFace是在SWT基础上构建的更高级别的抽象层,它简化了UI开发,提供了数据绑定和事件处理等功能。 **SWT和JFace的基础知识** SWT是一个与...
例如,JFace的Dialogs、Views和TableViewer等类,为常见的对话框和表格显示提供了高级接口,使得代码更简洁,易于维护。 在"Ecilpse的SWT/JFace例子"中,我们可以期待学习以下关键知识点: 1. **SWT控件的使用**:...
在这种情况下,"SWT/JFace 3.5 API (CHM)"是一个包含了SWT和JFace 3.5版本所有公共类、接口和方法的详细文档。开发者可以通过这个CHM文件快速查找所需的信息,了解如何使用特定的API函数,从而高效地进行开发工作。 ...
JFace的控件通常比SWT的控件更具有面向对象的特性,例如它有TreeViewer和TableViewer,用于显示和操作树形和表格数据。此外,JFace还包括模型-视图-控制器(MVC)的设计模式,帮助开发者更好地组织代码结构。 在提供...
SWT(Standard Widget Toolkit)和JFace是两个与Java GUI编程密切相关的库,它们都是Eclipse项目的一部分。本文将深入探讨这两个技术,并基于提供的文件名"2-Basic.pdf"和"3-Advanced.pdf"来推测可能包含的基础知识...
在这三章中,你可能通过实例学习到如何创建一个简单的SWT应用,然后逐步引入JFace来提高代码的简洁性和可维护性。通过练习创建带有菜单、工具栏、表视图和对话框的应用,你将深入理解SWT和JFace的协同工作方式。 ...
Eclipse SWT(Standard Widget Toolkit)和JFace是用于构建Java图形用户界面(GUI)的库,它们在Eclipse IDE和许多其他基于Eclipse的应用程序中扮演着重要角色。本资料涵盖了Eclipse SWT/JFace的核心应用,包括第19...
2. **JFace概述**:JFace是建立在SWT之上的一个高级UI框架,它简化了SWT组件的使用,提供了模型-视图-控制器(MVC)架构,使得代码更加模块化,易于维护。JFace提供了对话框、表视图、树视图、数据绑定等功能,为...
3. **Viewer**:一个抽象的控件,用于显示和编辑数据集合,例如TreeViewer和TableViewer。 4. **Action**:封装UI操作,方便管理和绑定到控件。 5. ** Wizards** 和 **Pages**:用于创建向导式用户界面,通常用于...
有问题欢迎来信讨论: talent_marquis@163.com<br><br>才搜索了一下,发现jExplorer这个名字已经泛滥了 <br>最核心代码来自IBM的JFace教程 链接如下: ... <br>已经实现的基本功能: <br>1....