ToolTip+F2

编程技术  /  houtizong 发布于 3年前   69
在http://grid-qian.iteye.com/blog/123003看到一篇文章,感觉不错.记录如下:
  在ECLIPSE中开发JAVA程序,当我们打开一个JAVA类时,ECLIPSE会打开一个JDT的JAVA EDITOR来显示这个类.当把鼠标移到某一个JAVA类型时,会出现一个tooltip的提示信息.这时我们可以按F2来把焦点设定在这个提示信息窗口上,这样就不会因为一移动鼠标这个提示窗口就消失了.       
         tooltip大家都会加,但怎么把F2这个功能也加上去呢?
         其实很容易,下面我用简单的代码介绍一下:
         比如说我们要在Table上加上tooltip,当鼠标移到某一行时,显示该行的提示信息.
         我们可以这么做:
         TableViewer viewer         Table table = viewer.getTable();         TooltipListener tooltipListener = new TooltipListener(viewer);         table.addListener(SWT.KeyDown,tooltipListener);         table.addListener(SWT.MouseHover,tooltipListener);

这里的TooltipListener类就是一个监听器,来监听系统的两个事件:一个是键盘敲下,一个是鼠标停留.
            private class TooltipListener implements Listener {                   private Shell tipshell;                   private Text msg;                   private TableViewer viewer;                   private Shell shell;                   private Display display;                   public TooltipListener(TableViewer viewer) {                         this.viewer = viewer;                         shell = this.viewer .getControl().getShell();                         display = shell.getDisplay();                    }                    public void handleEvent(Event event) {                          if(event.type == SWT.KeyDown){                               if(event.keyCode == SWT.F2){                                    tipshell.forceFocus();                                    tooltiptext.setFacus();                               }                          }else if(event.type == SWT.MouseHover){                               TableItem item = viewer.getTable().getItem(new Point(event.x, event.y));                               tipShell = new Shell(shell, SWT.ON_TOP | SWT.TOOL);                               tipShell.setLayout(new FillLayout());                               msg = new Text(tipShell, SWT.WRAP);                               msg.setForeground(display.getSystemColor(SWT.COLOR_INFO_FOREGROUND));                               msg.setBackground(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND));                               msg.setText("hello!nihao");                               tipShell.setVisible(true);                          }                }                break;            }       }

当鼠标停留,这个监听器监听到了停留事件就打开一个tooltip:hello!nihao 这时如果按下F2,这个监听器就监听到,马上把鼠标焦点定位到tooltip上.
       ^_^,就这么简单!其实就是两个语句:tipshell.forceFocus();tooltiptext.setFacus();
       希望对大家有帮助.

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客