- 浏览: 1149018 次
- 性别:
- 来自: 火星郊区
博客专栏
-
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倍效率”开发者
项目现在基本出了一个版本,虽然做的是边缘工作,但是用到的东西还是整理一下吧,毕竟也算学了一点点东西。首先是TableView的使用。RWT是 SWT的子集,因此,RWT中可能没有完全实现SWT的全部接口,也没有SWT那么完善。两者的架构不同,表现在显示形式,界面也不尽相同,但是基本的控 件的时候还是相同的。这里首先通过SWT来学习一些常用控件的使用。
首先说下SWT需要的库文件。包括:
org.eclipse.swt_3.x.x.jar
org.eclipse.jface_3.x.x.jar
org.eclipse.core.runtime_3.x.x.jar org.eclipse.ui.workbench_3.x.x.jar (org.eclipse.equinox.common_3.x.x.jar)另外这个包中也包含org.eclipse.core.runtime 感觉组织的有点混乱,这个包也要导入。另外版本的不同也可能出现要包导入错误,注意下版本。
下面的代码就是Tableview的创建,是从《eclipse入门到精通》引用的
import org.eclipse.jface.viewers.ColumnWeightData; import org.eclipse.jface.viewers.TableLayout; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.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 TableViewer1 { public static void main(String[] args) { new TableViewer1().open(); } public void open() { final Display display = new Display(); final Shell shell = new Shell(); shell.setSize(500, 150); // ------------------------------------------ shell.setLayout(new FillLayout()); // 第一步:创建一个TableViewer对象。式样:MULTI可多选、H_SCROLL有水平滚动条、V_SCROLL有垂直滚动条、BORDER有边框、FULL_SELECTION整行选择 TableViewer tv = new TableViewer(shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION); // 第二步:通过表格内含的Table对象设置布局方式 Table table = tv.getTable(); table.setHeaderVisible(true); // 显示表头 table.setLinesVisible(true); // 显示表格线 TableLayout layout = new TableLayout(); // 专用于表格的布局 table.setLayout(layout); // 第三步:用TableColumn类创建表格列 layout.addColumnData(new ColumnWeightData(13));// ID列宽13像素 new TableColumn(table, SWT.NONE).setText("ID号"); layout.addColumnData(new ColumnWeightData(40)); new TableColumn(table, SWT.NONE).setText("姓名"); layout.addColumnData(new ColumnWeightData(20)); new TableColumn(table, SWT.NONE).setText("性别"); layout.addColumnData(new ColumnWeightData(20)); new TableColumn(table, SWT.NONE).setText("年龄"); layout.addColumnData(new ColumnWeightData(60)); new TableColumn(table, SWT.NONE).setText("记录建立时间"); // 第四步:设置内容器和标签器 tv.setContentProvider(new TableViewerContentProvider()); tv.setLabelProvider(new TableViewerLabelProvider()); // 第五步:用TableViewer的setInput方法将数据输入到表格 Object data = PeopleFactory.getPeoples(); tv.setInput(data); // ------------------------------------------ shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }
下面分别是那2个提供类,这2个在类如果代码较少,服务与1个表时候可以写成内部类:
import org.eclipse.jface.viewers.ColumnWeightData; import org.eclipse.jface.viewers.TableLayout; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.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 TableViewer1 { public static void main(String[] args) { new TableViewer1().open(); } public void open() { final Display display = new Display(); final Shell shell = new Shell(); shell.setSize(500, 150); // ------------------------------------------ shell.setLayout(new FillLayout()); // 第一步:创建一个TableViewer对象。式样:MULTI可多选、H_SCROLL有水平滚动条、V_SCROLL有垂直滚动条、BORDER有边框、FULL_SELECTION整行选择 TableViewer tv = new TableViewer(shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION); // 第二步:通过表格内含的Table对象设置布局方式 Table table = tv.getTable(); table.setHeaderVisible(true); // 显示表头 table.setLinesVisible(true); // 显示表格线 TableLayout layout = new TableLayout(); // 专用于表格的布局 table.setLayout(layout); // 第三步:用TableColumn类创建表格列 layout.addColumnData(new ColumnWeightData(13));// ID列宽13像素 new TableColumn(table, SWT.NONE).setText("ID号"); layout.addColumnData(new ColumnWeightData(40)); new TableColumn(table, SWT.NONE).setText("姓名"); layout.addColumnData(new ColumnWeightData(20)); new TableColumn(table, SWT.NONE).setText("性别"); layout.addColumnData(new ColumnWeightData(20)); new TableColumn(table, SWT.NONE).setText("年龄"); layout.addColumnData(new ColumnWeightData(60)); new TableColumn(table, SWT.NONE).setText("记录建立时间"); // 第四步:设置内容器和标签器 tv.setContentProvider(new TableViewerContentProvider()); tv.setLabelProvider(new TableViewerLabelProvider()); // 第五步:用TableViewer的setInput方法将数据输入到表格 Object data = PeopleFactory.getPeoples(); tv.setInput(data); // ------------------------------------------ shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }
import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.swt.graphics.Image; //标签器。如果说内容器是对输入表格的数据集作处理, //那么标签器则是对数据集中的单个实体对象进行处理和转化,由标签器来决定实体对象中的字段显示在表格的哪一列中。 public class TableViewerLabelProvider implements ITableLabelProvider { // 创建几个图像 private Image[] images = new Image[] { new Image(null, "icons/refresh.gif"), new Image(null, "icons/star.jpg"), new Image(null, "icons/moon.jpg") }; // 由此方法决定数据记录在表格的每一列显示什么文字。 // element参数是一个实体类对象。col是当前要设置的列的列号,0是第一列。 public String getColumnText(Object element, int col) { PeopleEntity o = (PeopleEntity) element; // 类型转换 if (col == 0)// 第一列要显示什么数据 return o.getId().toString(); if (col == 1) return o.getName(); if (col == 2) return o.isSex() ? "男" : "女"; if (col == 3) return String.valueOf(o.getAge()); // 将int型转为String型 if (col == 4) return o.getCreateDate().toString(); return null; // 方法可以返回空值 } // getColumnText方法用于显示文字,本方法用于显示图片。 public Image getColumnImage(Object element, int col) { PeopleEntity o = (PeopleEntity) element; // 只让“陈刚”这条记录显示图片 if (o.getName().equals("陈刚") || o.getName().equals("周阅")) { if (col == 0)// 第一列要显示的图片 return images[0]; if (col == 2)// 根据性别显示不同的图标 return o.isSex() ? images[1] : images[2]; } return null; // 方法可以返回空值 } public void dispose() { // 别忘了SWT组件的原则:自己创建,自释放 for (Image image : images) { image.dispose(); } } // -------------以下方法很少使用,先不用管,让它们空实现----------------- public boolean isLabelProperty(Object element, String property) { return false; } public void addListener(ILabelProviderListener listener) { } public void removeListener(ILabelProviderListener listener) { } }
另外就是实体类,这里只是简单的写了一个实体,这里的数据可以从数据库中读取,但是那样注意数据的存储使用的容器类型,
并注意类型的转换。
import java.util.Date; //本类包含五个不同数据类型的变量,分别对应数据库表中的五个字段。变量为private型,即只能 //由类的内部代码访问,外界只能通过这些变量相应的Setter/Geter方法来访问它们 public class PeopleEntity { private Long id; //惟一识别码,在数据库里常为自动递增的ID列 private String name; //姓名 private boolean sex; //性别 true男,flase女 private int age; //年龄 private Date createDate; //记录的建立日期。Date类型是java.util.Date,而不是java.sql.Date //以下代码为字段各自的Setter/Geter方法。参考第3.5.2节,这些方法在Eclipse可自动生成。 public Long getId() { return id;} public void setId(Long long1) {id = long1;} public String getName() {return name;} public void setName(String string) {name = string;} public boolean isSex() { return sex;} public void setSex(boolean sex) { this.sex = sex; } public int getAge() {return age;} public void setAge(int i) {age = i;} public Date getCreateDate() {return createDate;} public void setCreateDate(Date date) {createDate = date;} }
另外是封装的获取数据的接口:
import java.util.ArrayList; import java.util.Date; import java.util.List; //创建PeopleEntity对象的工厂,创建三个PeopleEntry对象,并装入List集合返回 public class PeopleFactory { public static List<PeopleEntity> getPeoples() { // 工厂的静态方法 List<PeopleEntity> list = new ArrayList<PeopleEntity>(); { // 第1个实体类对象 PeopleEntity o = new PeopleEntity(); o.setId(new Long(1));// id字段的类型被定义成了Long,所以要转化一下 o.setName("陈刚"); o.setSex(true); o.setAge(28); o.setCreateDate(new Date()); // 当前日期 list.add(o); } { // 第2个实体类对象 PeopleEntity o = new PeopleEntity(); o.setId(2L); // 利用JDK5.0的自动装箱功能,省了long到Long对象的转化 o.setName("周阅"); o.setSex(false); o.setAge(18); o.setCreateDate(new Date()); list.add(o); } { // 第3个实体类对象 PeopleEntity o = new PeopleEntity(); o.setId(3L); o.setName("陈常恩"); o.setSex(true); o.setAge(27); o.setCreateDate(new Date()); list.add(o); } return list; } }
这样就实现了tableview的数据的读取,当然还可以实现一写其他的功能,和细节的改变。
发表评论
-
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 1587今天写了一个Jface的dialog,作为配置界面,其中有 ... -
SWT实现弹出日历控件
2012-03-27 08:00 2579实现像网页上的那种用户单击一个Text框然后框下面出现一个日历 ... -
JFace进度条
2012-03-27 08:01 1111Java代码 someB ... -
getConfigurationElementsFor 无法获得扩展点的信息
2012-03-26 10:27 1091做项目的时候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 1614One of the new things in RAP 1. ... -
【RAP】CAS PIA 快速浏览入口地址
2012-02-07 08:23 1234下面的链接是访问RAP应用的入口。有2中方式,图片上已经注明。 ... -
RAP 与 RCP的区别
2012-02-07 08:23 1321RAP 可以让开发人员使用 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 ...
相关推荐
当我们需要在横屏模式下使用tableView时,可能会遇到一些不同于竖屏的挑战,比如布局调整、数据加载和显示等问题。本文将详细讲解如何在横屏下正确地使用tableView,以及涉及的相关技术。 1. **屏幕方向检测** 在...
本教程将深入讲解如何在iOS项目中有效地使用tableView,包括自定义和字典的使用。 首先,理解UITableView的基本结构至关重要。UITableView由多个UITableViewCell组成,每个cell代表一行数据。开发者需要定义cell的...
QML中实现表格可以使用多种方式,比如直接使用ListView,定义每一行delegate,...那么,接下来就看看Quick Control2 的TableView使用方法。 博客介绍:https://blog.csdn.net/luoyayun361/article/details/122361571
遍历这个数组,提取每个城市的名称和其他相关信息,存储在一个适合TableView使用的数据模型中。这个模型可以是自定义的类,比如`CityModel`,包含城市名、ID等属性。 3. **设置TableView的数据源**:实现...
下面将详细讲解这两个组件的使用及其相关知识点。 `QTableWidget`是Qt Widgets模块中的一个类,它提供了一个完整的表格控件,包括行、列和单元格的完整交互功能。`QTableWidget`易于使用,因为它提供了丰富的API来...
本教程将详细介绍如何在Swift中进行简单的tableView使用,包括cell的移动、删除和增加。 一、创建UITableView 首先,我们需要在故事板(Storyboard)或代码中创建一个UITableView。在Storyboard中,从对象库拖动一...
由于没有直接提供博客内容,我将根据通常的TableView使用实践来详细解释这个主题。 1. **UITableView的基本结构**: UITableView由多个单元格(UITableViewCell)组成,每个单元格显示一行数据。此外,还有可选的...
本实例着重讲解如何使用`QTableView`进行数据操作以及将表格视图导出为PNG图像。 首先,`QTableView`是Qt GUI库中的一个视图类,它提供了用户界面来展示模型数据。创建一个`QTableView`实例后,你需要设置一个数据...
本篇文章将深入探讨如何在Swift中实现`UITableView`的各种高级特性,包括cell的展开/折叠、自适应高度以及cell内嵌套的另一个tableView的自适应布局。 首先,让我们关注`cell展开/折叠`的功能。在`UITableView`中,...
在本实例中,我们将探讨如何使用`QTableView`来添加和删除行数据,这对于初学者来说是一个很好的学习起点。 首先,我们需要了解`QTableView`的工作原理。它是`QAbstractItemView`的子类,用于展示由`...
3. 通过 storyboard 或代码注册这个自定义Cell类到UITableView,确保在`viewDidLoad()`中调用`tableView.register(UINib(nibName: "CustomTableViewCell", bundle: nil), forCellReuseIdentifier: "CustomCell")`或`...
总之,SwiftTableView项目是学习和实践Swift中TableView使用的好例子。通过这个项目,开发者不仅可以了解如何在Swift中构建和管理TableView,还能掌握数据驱动UI的设计模式,以及如何优化TableView的性能和用户体验...
控件所在文件夹:YSTreeTableView,使用时直接把此文件夹拖入工程。 文件介绍: 1、YSTreeTableViewNode.swift:节点Model,可以根据需要自定义 2、YSTreeTableViewNodeCell.swift:节点Cell,可以根据需要自定义...
总之,这个压缩包中的源代码提供了学习和实践iOS开发中TableView使用的基础,对于初学者来说是很好的参考资料。通过理解和实践这些代码,你将能够掌握TableView的核心功能,为构建更复杂的iOS应用打下坚实的基础。
本实例将探讨“TableView 的使用 实例一”,通过一个简单的项目实战来深入理解UITableView的工作原理和使用方法。 首先,我们需要在Xcode中创建一个新的iOS项目,并引入UITableView。在Storyboard中,拖拽一个...
综上所述,“Swift_TableView”项目涵盖了Swift基础、网络请求、TableView使用、数据绑定等多个核心知识点。通过实践这个项目,初学者能够更好地理解和掌握Swift中展示动态数据的核心技术。在实际开发中,还可以...
本教程将深入探讨`UITableView`的使用,包括其基本概念、初始化、数据源与代理、自定义单元格以及性能优化。 首先,我们要理解`UITableView`的基本结构。`UITableView`是由行(`UITableViewCell`)组成的视图,每行...
本教程将深入讲解如何简单地使用UITableView,包括设置UITableViewDataSource和UITableViewDelegate,以及它们中的代理方法。 首先,我们来看UITableViewDataSource。这个协议定义了UITableView所需的数据源,你...
在JavaFX中,`TableView`是一个强大的组件,用于展示数据集,它允许用户与数据进行交互,例如排序、筛选和编辑。本教程将探讨如何利用JavaFX与JDBC(Java Database Connectivity)结合,从MySQL数据库中获取数据并...
在iOS开发中,TableView和ScrollView是两种常用的UI组件,它们各自有着特定的使用场景。当需求涉及复杂的滚动交互时,可能会需要将TableView与ScrollView混合使用,以实现更丰富的用户界面和交互体验。本文将深入...