<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Swing


    天行健 君子以自強不息

    posts - 69, comments - 215, trackbacks - 0, articles - 16
       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    控制Swing中ToolTip的顯示與隱藏

    Posted on 2008-05-22 22:42 zht 閱讀(4933) 評論(4)  編輯  收藏 所屬分類: Swing

     

    先給出兩個控制方法
    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的顯示與隱藏。

    對于tooltip的顯示時間可以通過ToolTipManager中的set**的方法進行設置。


    以下是測試代碼

        public static void main(String[] args) {
            
    final JPanel panel = new JPanel();
            
    final JButton btn = new JButton("button");
            btn.setToolTipText(
    "button_tooltip");
            panel.add(btn);
            
    final JButton btn1 = new JButton("button1");
            panel.add(btn1);
            btn1.setToolTipText(
    "button1_tooltip");
            btn.addActionListener(
    new ActionListener() {
                
    public void actionPerformed(ActionEvent e) {
                    postToolTip(btn1);

                }
            });
            btn1.addActionListener(
    new ActionListener() {
                
    public void actionPerformed(ActionEvent e) {
                    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);
        }



    注:以上有些內容引用自網絡,我加了一些個人理解。

    下一篇將介紹一下對tooltip顯示的控制,ex)換行,顏色以及其它屬性

    主站蜘蛛池模板: 免费看少妇高潮成人片| 久久久久久毛片免费看| 一个人免费高清在线观看 | 亚洲欧洲日产国码高潮αv| 亚洲av纯肉无码精品动漫| 在线观看免费亚洲| 美国毛片亚洲社区在线观看 | 亚洲成AV人片一区二区| 国产精品视频白浆免费视频| 亚洲综合无码一区二区| 午夜性色一区二区三区免费不卡视频 | 亚洲Av无码专区国产乱码DVD| 日韩色日韩视频亚洲网站| 亚洲国产成人久久精品99| 免费无码又爽又刺激网站直播| 亚洲自偷自偷精品| 久久精品国产亚洲AV未满十八| 国产高清不卡免费视频| 亚洲综合区图片小说区| 亚洲色精品vr一区二区三区| 亚洲 综合 国产 欧洲 丝袜| 亚洲男人天堂2017| 日韩国产免费一区二区三区| 亚洲日韩一区二区三区| 亚洲日韩中文在线精品第一| 久久免费观看国产精品88av| 亚洲激情校园春色| 日韩一级在线播放免费观看| 黄色短视频免费看| 亚洲成a人不卡在线观看| 国产福利免费观看| av永久免费网站在线观看| 亚洲不卡在线观看| 免费永久在线观看黄网站| 拍拍拍无挡免费视频网站| ww亚洲ww在线观看国产| 中文字幕中韩乱码亚洲大片| 最新欧洲大片免费在线| 中文无码日韩欧免费视频| 最新国产精品亚洲| 亚洲AV无码一区二区二三区入口 |