类库开刀(一)
SWT
的
TABLE
对象一步实现可复制
(不用每个
TABLE
实例都修改)
第一章
概要
最近的一个项目,涉及到离线办公需求,索性弄了一个
CS
客户端满足这个需求。不过用户在
CS
已经成型的时候竟然又追加了一个需求:每个表格的单元格可以简单复制,大家知道
SWT
的
TABLE
是不可以直接复制的。到网上搜索了一下有没有可以简单的、比用修改每个列表的一步解决方法,我比较懒总是喜欢一步到位。项目到了收尾阶段还要全盘修改一些代码,简直就是测试人员的噩梦,开发人员的悲剧。
网上的解决办法是,
table
实例加上监听鼠标点击事件与键盘按钮事件,我们这个
CS
一共有
300
多个表格,如果一个一个加起来。。。苦苦寻觅了几个小时仍旧是无果,索性按照监听这个思路给
SWT
的
TABLE.CLASS
开刀!
我的目标是,修改一个类库文件,就可以实现
300
多表格的可复制处理。
第二章
修改步骤
第一节
锁定目标
经过验证,还是将监听加入到:
org\eclipse\swt\widgets\Table.java
中比较好。
这个源文件在
\plugins\org.eclipse.swt.win32.win32.x86_3.4.1.v3452b.jar
中。
第二节
创建等位目录
我们需要在项目工程的
src
目录下创建与
org.eclipse.swt.win32.win32.x86_3.4.1.v3452b.jar
这个包相同的路径,才可以实现
Debug
调试我们所修改的内容是否可以成功。目录结构下图所示,仅供参考。
第三节
创建
Table.java
文件
在
widgets
目录创建
Table.java
文件,文件代码直接将
org.eclipse.swt.win32.win32.x86_3.4.1.v3452b.jar
的
Table.class
反编译后的代码拷贝即可。
第四节
开始动刀
找到如下方法:
public Table (Composite parent, int style) {
super (parent, checkStyle (style));
}
修改内容:
public Table (Composite parent, int style) {
super (parent, checkStyle (style));
// CONAC 曲文博 添加 开始
this.addMouseListener(new MouseAdapter() {
public void mouseDown(MouseEvent event) {
Point pt = new Point(event.x, event.y);
final TableItem item = getItem(pt);
if (item == null) {
return;
}
int column = -1;
for (int i = 0, n = getColumnCount(); i < n; i++) {
Rectangle rect = item.getBounds(i);
if (rect.contains(pt)) {
column = i;
break;
}
}
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection contents=new StringSelection(item.getText(column)); //用拷贝文本框文本实例化StringSelection对象
clipboard.setContents(contents, null); //设置系统剪贴板内容
}
});
// CONAC 曲文博 添加 结束
}
第三章
编译
到此
Table.java
文件修改结束,那么在工程内编译一下,会得到如下两个文件:
Table$1.class
、
Table.class
将这两个文件直接拷贝到
org.eclipse.swt.win32.win32.x86_3.4.1.v3452b.jar
中对应的目录下覆盖即可,此时
Eclipse
应该关闭。
第四章
总结
重启
Eclipse
,启动工程后,我们发现所有的
Table
都实现了那个监听,达到了目的。只要鼠标点击单元格一下,内容就可以被复制到剪贴板中,也省去了用户的复制操作。
如有不足希望大家指正。
第五章
文件下载
一、
Table.java
二、
Table$1.class
、
Table.class
三、
org.eclipse.swt.win32.win32.x86_3.4.1.v3452b.jar
这个文件的版本有点低,呵呵,我们做的
CS
系统主要用的是
RCP
所以就定在了比较低的版本上,如果无特殊需要可以不必下载
分享到:
相关推荐
swt table 实现换行
SWT Table 单元格编辑实例代码
工具类实现了分页,虽然还有些欠缺,如在搜索栏和导出菜单未考虑分页的情况
SWT实例
基于java语言,应用eclipse SWT类库+Jdbc+SqlServer数据库,实现同一界面展示散点图和数据表格展示,满足跨平台、安全等软件应用需求。
SWT的简单实例,涉及到了BUTTON,TEXT,COMBE,SHELL等组件,对于初步学习 SWT是个很好的例子。
SWT表格管理类,包括表头排序事件,table宽度自适应事件,隔行颜色事件
修改类库中的tooltip、单元格的复制与粘贴
Eclipse SWT/JFace SWT JFace 实例 Eclipse SWT/JFace 书中 全部实例
这些实例是有关JAVA中SWT编程的实例
SWT/JFace开发实例
KTable for SWT 源代码+实例
SWT和JFace开发实战实例,可供学习参考。
SWT/JFace实例演示,SWT/JFace实例演示,SWT/JFace实例演示,SWT/JFace实例演示
SWT、JFACE控件实例,官方的东西,各种控件例子! 已经把包名等修复好了。直接导入IDE中可以运行。各种效果。
swt 开发实例 快来看看 好东西 一起分享吧
使Excel嵌入到SWT窗口中 使用的Eclipse版本:3.3.1 使用的jdk版本:5.0
SWT无边框窗体实现鼠标拖动移动,并添加右键菜单关闭功能
swt中treeview和tableview实例,有助于理解这两个控件的使用。另外附带html页面。。可读性更强。