<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)換行,顏色以及其它屬性

    主站蜘蛛池模板: 黄页网站在线免费观看| 毛片在线播放免费观看| 亚洲AV无码国产精品永久一区| 免费人成再在线观看网站| 久久免费看少妇高潮V片特黄| 全免费a级毛片免费看无码| 亚洲精品成人无限看| 亚洲成av人在线观看网站| 久久99精品视免费看| 亚洲无码黄色网址| 亚洲人成色99999在线观看| 久久精品一区二区免费看| 亚洲成AV人片在线观看无码| 朝桐光亚洲专区在线中文字幕| 777成影片免费观看| 亚洲一区视频在线播放| caoporn国产精品免费| 精品免费国产一区二区三区| 亚洲国产AV一区二区三区四区| 国产老女人精品免费视频| 亚洲一区动漫卡通在线播放| 免费在线看污视频| 亚洲精品福利视频| a级黄色毛片免费播放视频| 免费一级毛片在线播放| 亚洲精品自偷自拍无码| 亚洲成A人片77777国产| 色噜噜狠狠色综合免费视频| 永久亚洲成a人片777777| 特级av毛片免费观看| 亚洲人成伊人成综合网久久久| 一级特黄色毛片免费看| 国产一级特黄高清免费大片| 亚洲色精品VR一区区三区| 91视频国产免费| 亚洲youjizz| 亚洲国产日韩成人综合天堂| 曰批免费视频播放免费| 亚洲伊人久久大香线蕉苏妲己| 99精品视频在线视频免费观看| 亚洲好看的理论片电影|