`

设置Table的ToolTip

阅读更多
    /**
     * 设置Table的ToolTip 
     * @param tbv
     */
    public static void setToolTiip(final TableViewer tbv) {
        final Table table = tbv.getTable();
        table.setToolTipText("");
//        final Display display = PlatformUI.getWorkbench().getDisplay();
        
        final Listener textListener = new Listener() {

            public void handleEvent(Event event) {
                Text text = (Text) event.widget;
                Shell shell = text.getShell();
                switch (event.type) {
                    case SWT.MouseEnter:
                        text.forceFocus();
                        break;

                    case SWT.MouseExit:
                        shell.dispose();
                        break;
                }
            }
        };
        
        final Listener tableListener = new Listener() {

            Shell     tip     = null;
            Text      text    = null;
            TableItem oldItem = null;

            public void handleEvent(Event event) {
                switch (event.type) {
                    case SWT.Dispose:
                    case SWT.KeyDown: {
                        if (tip == null) break;
                        tip.dispose();
                        tip = null;
                        break;
                    }
                    
                    case SWT.MouseDown: {
                        if (tip == null) break;
                        tip.dispose();
                        tip = null;
                        break;
                    }
                    
                    case SWT.MouseWheel: {
                        if (tip == null || tip.isDisposed()) break;
                        table.notifyListeners(SWT.MouseHover, event);
                        break;
                    }
                    
                    case SWT.MouseHover: {
                        TableItem item = table.getItem(new Point(event.x, event.y));
                        if (item == oldItem && tip != null && !tip.isDisposed()) 
                            return;
                        else 
                            oldItem = item;

                        if (item != null) {
//                            if (tip != null && !tip.isDisposed()) tip.dispose();
                            
                            if (tip == null || tip.isDisposed())
                            {
                                tip = new Shell(event.display, SWT.ON_TOP | SWT.NO_FOCUS | SWT.TOOL);
                                tip.setBackground(event.display.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
                                GridLayout layout = new GridLayout();
                                layout.marginWidth = 5;
                                tip.setLayout(layout);

                                text = new Text(tip, SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);
                                text.setLayoutData(new GridData(GridData.FILL_BOTH));
                                text.setEditable(false);

                                text.setForeground(event.display.getSystemColor(SWT.COLOR_INFO_FOREGROUND));
                                text.setBackground(event.display.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
                                
                                text.addListener(SWT.MouseExit, textListener);
                                text.addListener(SWT.MouseEnter, textListener);
                            }
                            
                            TableColumn[] columns = tbv.getTable().getColumns();
                            StringBuilder buff = new StringBuilder();
                            for(int i=0; i<columns.length; i++)
                            {
                                buff.append(columns[i].getText()).append(": \n\t").append(item.getText(i)).append("\n");
                            }
                            
                            text.setText(buff.toString());
                            
                            Point p = table.getLocation();
                            Point point = table.toDisplay(p.x, p.y);
                            Rectangle rect = item.getBounds();
                            tip.setBounds(event.x + point.x, point.y + rect.y + table.getHeaderHeight()/2, 300, 300);
                            tip.setVisible(true);
//                            tip.forceFocus();
//                            tip.setActive();
//                            tip.addListener(SWT.Deactivate, new Listener() {
//                                @Override
//                                public void handleEvent(Event event) {
//                                    tip.dispose();
//                                }
//                            });
                        } else {
                            if ((tip != null) && !tip.isDisposed()) tip.dispose();
                        }
                    }
                }
            }

        };
        
        table.addListener(SWT.Dispose, tableListener);
        table.addListener(SWT.KeyDown, tableListener);
        table.addListener(SWT.MouseHover, tableListener);
        table.addListener(SWT.MouseDown, tableListener);
        table.addListener(SWT.MouseWheel, tableListener);

    }

 

自定义控件酷似Eclipse的编辑器的弹出ToolTip,可以定制Tip的内部控件。

 

 

0
0
分享到:
评论

相关推荐

    jquery tooltip在表格中的使用

    本教程将深入讲解如何在表格中集成 jQuery Tooltip,并展示一个基于 "jQuery_tooltip_demo_in_table_by_dota" 的示例。 首先,你需要确保已经在项目中引入了 jQuery 和 jQuery Tooltip 插件。通常,这可以通过在 ...

    表格单元格自定义ToolTip组件

    5. 应用到DataGrid:在DataGrid的列定义或单元格渲染器中,设置自定义ToolTip组件为指定的ToolTip。 在实际项目中,"自定义ToolTip"这个压缩包可能包含以下内容: 1. 源代码文件:自定义ToolTip组件的ActionScript...

    react-rsuitetable是一个React实现的表格Table组件

    1. **固定表头和列**:在滚动浏览长表格时,`rsuite-table`允许用户设置固定表头,这样即便在表格内容滚动时,表头仍然可见,方便用户始终了解列名。此外,它还支持固定列在左侧,这对于展示分类或关键信息特别有用...

    一个ajax的tooltip例子

    【Ajax Tooltip】是一种交互式用户界面元素,它利用Ajax(异步JavaScript和XML)技术来动态显示与鼠标指针相关的提示信息。在网页设计中,Tooltip通常用于提供额外的上下文信息,当用户将鼠标悬停在某个元素上时,会...

    DataGrid实现tooltip功能

    在`&lt;style&gt;`标签内定义了`.transparent`类的样式,用于设置`tooltip`的透明度和边框样式。 ```css .transparent { BORDER-RIGHT: indianred 1px solid; BORDER-TOP: indianred 1px solid; DISPLAY: none; ...

    源码:el-table和Echarts折线图【表-图两者联动】显示tooltip效果【表-图-表三者联动】展示数据

    【Vue入门实践4】el-table和Echarts折线图【表-图两者联动】显示tooltip效果【表-图-表三者联动】展示数据 资源相关文章https://mp.csdn.net/mp_blog/creation/editor/123230346

    vxe-table-v2.9.24_表格组件_Table_

    5. **数据校验**:组件提供了数据校验机制,可以设置列级别的校验规则,确保输入的数据符合预期,避免因数据错误引发的问题。 6. **树形结构**:vxe-table支持展示具有层级关系的数据,通过折叠/展开子节点,清晰地...

    xpTable,c# xptable NET中最强,最全功能的表格控件 ,可以定制一个ListView,能够在列中插入图像、下拉框、可上下调整的数字、进度条

    c# xptable NET中最强,最全功能的表格控件 ...然后,拖动Table, ColumnModel 和 TableModel到Form上,设置Table的ColumnModel 和 TableModel属性,添加Column到ColumnModel,添加Row 和 Cell到TableModel.

    vxe-table vue表格解决方案 v3.7.9.zip

    《vxe-table vue表格解决方案 v3.7.9》是一个专为Vue.js开发的高性能、易用的表格组件库,其版本号为3.7.9。作为一个强大的前端UI组件,vxe-table提供了丰富的功能,旨在帮助开发者在构建数据驱动的Web应用时,能够...

    Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用

    主要介绍了Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    ets tooltip截图显示用法实例

    然后,在创建图表时,你需要为特定的系列或数据项设置Tooltip截图的相关选项。这些选项可能包括截图的源(可能是URL,也可能是本地图片)、截图的显示方式(是否动态加载、何时显示等)以及截图的大小和位置。 例如...

    全面解析Bootstrap中tooltip、popover的使用方法

    `offset.setOffset`方法用于设置元素的偏移值,同时避免因四舍五入导致的定位问题。`$viewport`是显示Tooltip的容器元素,通常为浏览器窗口。 `getPosition`函数用于获取元素的定位坐标,它使用了`...

    Bootstrap Table API 中文版(完整翻译文档).docx

    * `data-toggle`: 该选项用于指定表格的 toggle 按钮的行为,可以设置为 "table"、"tooltip"、"popover" 等。 * `classes`: 该选项用于指定表格的类名,可以设置为 "table"、"table-hover" 等。 * `height`: 该选项...

    VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip

    elementUI表格table elementUI文字提示Tooltip 如果要实现鼠标移到表头有注释或者弹框该怎么添加呢? 正在加载中... data=contentList xss=removed sort-change=sort class=pro-table-item tooltip-effect=...

    swt类库Table

    1. **工具提示(Tooltip)**:在SWT中,可以为`Table`的每一项设置单独的工具提示。通过调用`TableItem`的`setToolTipText(String text)`方法,可以为选定的行或单元格设置自定义的提示文本。当鼠标停留在该行或...

    iview table 表格实现 单列超出隐藏 鼠标悬浮出现详情

    效果图 直接复制粘贴下面代码 就可以 { title: '交易订单号', align: 'center', key: 'id', minWidth: 120, render: (h, params) =&gt; { let texts=params.row.id; //这里的params.row.id 是 key值 ...

    BootStrap tooltip提示框使用小结

    复制代码 代码如下:”tooltip” data-original-title=”this&gt;test message  data-original-title可以直接写为title,仍然能正常使用,源码中优先查找前者,前者不存在就会查找title 提示框不提供HTML触发方式只能...

    bootstrap-table

    7. **插件集成**:Bootstrap Table还允许与其他Bootstrap插件(如Popover、Tooltip)或第三方库(如jQuery UI,Handsontable等)集成,增强表格功能,如编辑、搜索、导出等。 8. **自定义样式**:开发者可以通过...

Global site tag (gtag.js) - Google Analytics