类库开刀(二)
SWT的
TABLE对象的
ToolTip一步实现自动折行
(不用每个
TABLE
实例都修改)
第一章
概要
最近的一个项目,涉及到离线办公需求,索性弄了一个
CS客户端满足这个需求。不过用户在
CS已经成型的时候竟然又追加了一个需求:每个表格的单元格的
ToolTip可以自动折行,大家知道
SWT的
TABLE的
ToolTip是不可以直接自动折行的。到网上搜索了一下有没有可以简单的、比用修改每个列表的一步解决方法,我比较懒总是喜欢一步到位。项目到了收尾阶段还要全盘修改一些代码,简直就是测试人员的噩梦,开发人员的悲剧。
网上的解决办法是,
table实例加上监听鼠标悬停事件,我们这个
CS一共有
300多个表格,如果一个一个加起来。。。苦苦寻觅了几个小时仍旧是无果。
我觉得加监听不是正道,因为
Table已经实现了
ToolTip的表示,只是表示在一行而已,所以我认为一定会有简单的方法,让
ToolTip表示的时候自动折行!索性给
SWT的
TABLE.CLASS开刀!
我的目标是,修改一个类库文件,就可以实现
300
多表格的
ToolTip
可自动折行。
第二章
修改步骤
第一节
锁定目标
经过验证,还是将监听加入到:
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
文件,文件代码直接j将
org.eclipse.swt.win32.win32.x86_3.4.1.v3452b.jar
的
Table.class
反编译后的代码拷贝即可。
第四节
开始动刀
一.修改文件第一处
找到如下方法:
LRESULT wmNotifyToolTip (NMHDR hdr, int /*long*/ wParam, int /*long*/ lParam)
的如下内容:在
6776
行(
Eclipse
每个版本可能行数会不同)
:
int width = toolRect.right - toolRect.left, height = toolRect.bottom - toolRect.top;
SetWindowPos (hwndToolTip, 0, toolRect.left , toolRect.top, width, height, flags);
将上面内容替换:
// CONAC 曲文博 添加 开始
int haba = 288;
if (toolRect.right - toolRect.left >haba) {
int length = toolRect.right - toolRect.left;
int width = 298, height = (Math.round(length/haba) + 1) * 18;
SetWindowPos (hwndToolTip, 0, toolRect.left , toolRect.top, width, height, flags);
} else {
int width = toolRect.right - toolRect.left, height = toolRect.bottom - toolRect.top;
SetWindowPos (hwndToolTip, 0, toolRect.left , toolRect.top, width, height, flags);
}
// CONAC 曲文博 添加 结束
二.修改文件第二处
找到如下方法:
LRESULT wmNotifyToolTip (NMTTCUSTOMDRAW nmcd, int /*long*/ lParam)
的如下内容:在
6898
行(
Eclipse
每个版本可能行数会不同)
:
int flags = OS.DT_NOPREFIX | OS.DT_SINGLELINE | OS.DT_VCENTER;
将上面内容替换:
int flags = OS.DT_NOPREFIX | OS.DT_WORDBREAK | OS.DT_VCENTER;
三.修改文件第三处
找到如下方法:
LRESULT wmNotifyToolTip (NMTTCUSTOMDRAW nmcd, int /*long*/ lParam)
在
6909
行添加如下内容:
// CONAC 曲文博 添加 开始
int haba = 288;
if (textRect.right - textRect.left >haba) {
int length = textRect.right - textRect.left;
textRect.right = haba + textRect.left;
textRect.bottom = textRect.top + (Math.round(length/haba)+1)*18;
}
// 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
所以就定在了比较低的版本上,如果无特殊需要可以不必下载
分享到:
相关推荐
jQuery实例_ ToolTip的实现
修改类库中的tooltip、单元格的复制与粘贴
一个ajax的tooltip例子,一个ajax的tooltip例子
DataGrid实现tooltip功能DataGrid实现tooltip功能.txtDataGrid实现tooltip功能.txtDataGrid实现tooltip功能.txtDataGrid实现tooltip功能.txtDataGrid实现tooltip功能.txt
每个单元、列可以有Tooltip 等等…… [XPTable] XPTable包含下面的组件: 1. Table, 2. ColumnModel 和它的 Columns, 3. TableModel 和它的 Row 和 Cell, 4. Renderer 5. Editor [翻译] Mathew Hall.著XPTable - ...
jquery tooltip 在表格中的使用 当鼠标移到表格中的不同图片上时, 显示不同的图片以及信息
【Vue入门实践4】el-table和Echarts折线图【表-图两者联动】显示tooltip效果【表-图-表三者联动】展示数据 资源相关文章https://mp.csdn.net/mp_blog/creation/editor/123230346
这是一个在WPF中修改任何控件的Tooltip的样式的源代码,供大家参考获得自己想要的功能
效果图 直接复制粘贴下面代码 就可以 { title: '交易订单号', align: 'center', key: 'id', minWidth: 120, render: (h, params) => { let texts=params.row.id; //这里的params.row.id 是 key值 ...
1.声明一实例变量 nvo_ToolTip ToolTip 2.在需要此服务的对象的构造事件中加入 ToolTip.AddTool(this, string(this.tag), 0) 3.在对象的MouseMove事件中加入ToolTip.RelayMsg(This) 4.把要显示的ToolTips文本...
基于 Vue 的简单 tooltip 工具
在listbox中显示每个Item的Tooltip
微信小程序-ToolTip信息提示组件导入将ToolTip文件夹复制到pages文件夹内使用在需要使用ToolTip的页面对应的.wxml文件中添加: src="../ToolTip/toolTip.wxml"/> <!-- 引入toolTip模板 --> is=...
easyui利用tooltip实现title功能
rsuite-table 是一个 React 实现的表格(Table) 组件。支持固定表头,固定列(固定在左侧);支持自定义调整列宽;支持自定义单元格内容;支持显示树状表格;支持排序。
一个简单的基于纯js实现的Tooltip 带有Images及Text显示。
表格单元格自定义ToolTip组件,适用所有Flex组件的自定义提示
插件描述:ets tooltip截图显示用法实例在图表节点显示对应的截图. 参考示例:http://www.jq22.com/jquery-info4830
主要介绍了Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
一个简单的Tooltip类 方便在控件中添加