类库开刀(二)
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是一种常见且有用的UI元素,它可以在用户鼠标悬停在某个元素上时显示额外的信息。 首先,让我们了解一下jQuery的核心概念。jQuery通过选择器来...
1. **工具提示(Tooltip)**:在SWT中,可以为`Table`的每一项设置单独的工具提示。通过调用`TableItem`的`setToolTipText(String text)`方法,可以为选定的行或单元格设置自定义的提示文本。当鼠标停留在该行或...
jQuery Tooltip 是一个非常实用的插件,用于在用户将鼠标悬停在元素上时显示相关信息。在表格中使用 jQuery Tooltip 可以增强用户体验,让用户在不离开当前视图的情况下获取额外的数据或说明。本教程将深入讲解如何...
【Ajax Tooltip】是一种交互式用户界面元素,它利用Ajax(异步JavaScript和XML)技术来动态显示与鼠标指针相关的提示信息。在网页设计中,Tooltip通常用于提供额外的上下文信息,当用户将鼠标悬停在某个元素上时,会...
在IT行业中,尤其是在软件开发领域,用户界面的设计与交互性是至关重要的。"TOOLTIP提示框"是这种设计中的一个重要...无论是API还是MFC方式,理解和掌握TOOLTIP的创建和管理都是提高C++应用程序用户友好性的关键一步。
4. **树状表格**:对于层级结构的数据,`rsuite-table` 支持显示为树形结构,每一行都可以展开或折叠,以展示或隐藏子项。这在处理有层次关系的数据时,如组织结构、目录树等场景下十分适用。 5. **排序功能**:...
这确保了整个表格的每个可交互元素都能够响应鼠标悬停事件,并正确显示tooltip。 #### 三、总结 通过以上分析,我们可以看出EasyUI框架下的`tooltip`组件为开发者提供了一种强大的工具,用于增强数据表格的交互性...
在某些情况下,我们可能希望为Listbox中的每个Item提供额外的信息,这通常可以通过实现Tooltip来达成。Tooltip是一种小型的弹出窗口,会在鼠标悬停在某个对象上时显示相关信息,为用户提供上下文帮助。 在标题"在...
8. **表单渲染**:vxe-table可以与Vue的表单组件配合,实现动态渲染表单,根据后台返回的字段结构自动生成表单,提高了开发效率。 9. **数据分页**:为了便于处理大量数据,vxe-table内置了分页功能,用户可以轻松...
Tooltip在Vue中通常被实现为一个自定义组件,可以方便地嵌入到任何项目中。下面,我们将详细讨论Vue组件的创建过程,以及如何构建一个简单的Tooltip功能。 1. **Vue组件基础**: - **定义组件**: 在Vue中,组件是...
"表格单元格自定义ToolTip组件"是一个专门解决UI交互问题的工具,它允许开发者根据需求为表格中的每个单元格提供更加详细和丰富的信息提示。这种自定义的ToolTip在Flex组件上特别有用,Flex是一种强大的富互联网应用...
### DataGrid实现tooltip功能 #### 一、简介 在Web开发中,为了提供更好的用户体验,开发者经常需要在用户界面中加入提示信息。其中,`tooltip`(工具提示)是一种非常实用的功能,它可以在用户鼠标悬停在某个元素...
在Windows Presentation Foundation (WPF) 中,Tooltip是一个用于显示与鼠标指针相关的简短提示信息的...这个压缩包中的“修改Tooltip样式”很可能包含了实现这些样式的具体源代码,你可以参照这些代码进行学习和实践。
在本文中,我们将深入探讨如何使用Qt库在C++环境中实现一个类似QQ头像悬停时显示更多好友信息的ToolTip功能。首先,我们先了解一下Qt库和ToolTip的基本概念。 Qt是一个跨平台的应用程序开发框架,它由Qt公司开发并...
Tooltip是通过在用户将鼠标停留一段时间后自动显示的一个小型文本框,通常用来提供关于舞台上对象的附加信息。在Flash中,我们可以使用ActionScript来创建和控制Tooltip。 2. 创建Tooltip: - AS2(ActionScript ...
在本文中,我们将深入探讨如何使用AngularJS实现一个功能丰富的tooltip效果。AngularJS,作为一款强大的前端JavaScript框架,提供了一种高效的方式来构建动态、数据驱动的Web应用。它以其双向数据绑定、模块化和可...
【Vue入门实践4】el-table和Echarts折线图【表-图两者联动】显示tooltip效果【表-图-表三者联动】展示数据 资源相关文章https://mp.csdn.net/mp_blog/creation/editor/123230346
每个单元、列可以有Tooltip 等等…… [XPTable] XPTable包含下面的组件: 1. Table, 2. ColumnModel 和它的 Columns, 3. TableModel 和它的 Row 和 Cell, 4. Renderer 5. Editor [翻译] Mathew Hall.著XPTable - ...
4. **添加控件**:为每个需要Tooltip的控件添加到Tooltip中,指定控件ID和对应的Tooltip文本: ```cpp m_tooltip.AddTool(GetDlgItem(IDC_BUTTON1), _T("Button1 Tooltip Text")); ``` 5. **处理消息**:重写`...
ETS(Enhanced Table Suite)是一款基于ECharts的数据可视化插件,它扩展了ECharts的功能,提供了更丰富的交互体验。在本实例中,我们关注的是ETS的Tooltip功能,特别是其截图显示的特性。Tooltip通常用于在鼠标悬停时...