快速业务通道

控制Swing中ToolTip的显示与隐藏 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

控制Swing中ToolTip的显示与隐藏

时间:2011-06-11 BlogJava zht

先给出两个控制方法

1、显示tooltip

public static void postToolTip(JComponent comp) {  Action action = comp.getActionMap().get("postTip");  if (action == null) // no tooltip   return;  ActionEvent ae = new ActionEvent(comp, ActionEvent.ACTION_PERFORMED, "postTip", EventQueue.getMostRecentEventTime(), 0);  action.actionPerformed(ae); }

2、隐藏tooltip

public static void hideToolTip(JComponent comp) {  Action action = comp.getActionMap().get("hideTip");  if (action == null) // no tooltip   return;  ActionEvent ae = new ActionEvent(comp, ActionEvent.ACTION_PERFORMED, "hideTip", EventQueue.getMostRecentEventTime(), 0);  action.actionPerformed(ae); }

tooltip的显示与隐藏都是通过ToolTipManager这个类来控制的

当componet.setToolTipText的时候java的内部处理为public void setToolTipText(String text) {     String oldText = getToolTipText();     putClientProperty(TOOL_TIP_TEXT_KEY, text);     ToolTipManager toolTipManager = ToolTipManager.sharedInstance ();     if (text != null) {    if (oldText == null) {         toolTipManager.registerComponent(this);    }     } else {       toolTipManager.unregisterComponent(this);     }   }

而在ToolTipManager 的registerComponent方法中将两个Action添加到了组 件的actionMap 中,

具体的acton实现可以参考ToolTipManager 。

ActionMap actionMap = component.getActionMap();    if (inputMap != null && actionMap != null) {     actionMap.put("postTip", postTipAction);     actionMap.put("hideTip", hideTipAction);

上述两个方法就是取得这两个Action,然后调用相应的Action方法来控制 tooltip的显示与隐藏。

控制Swing中ToolTip的显示与隐藏(2)

时间:2011-06-11 BlogJava zht

对于tooltip的显示时间可以通过ToolTipManager中的set**的方法进行设置 。

以下是测试代码

publicstaticvoidmain(String[]args){     finalJPanelpanel=newJPanel();     finalJButtonbtn=newJButton("button");     btn.setToolTipText("button_tooltip");     panel.add(btn);     finalJButtonbtn1=newJButton("button1");     panel.add(btn1);     btn1.setToolTipText("button1_tooltip");     btn.addActionListener(newActionListener(){       publicvoidactionPerformed(ActionEvente){         postToolTip(btn1);       }     });     btn1.addActionListener(newActionListener(){       publicvoidactionPerformed(ActionEvente){         postToolTip(btn);       }     }); JFrame frame = new JFrame();  frame.setContentPane(panel);  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  frame.setSize(500, 400);  frame.setLocationRelativeTo(null);  frame.setVisible(true);   }

注:以上有些内容引用自网络,我加了一些个人理解。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号