<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 閱讀(4941) 評論(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)換行,顏色以及其它屬性

    主站蜘蛛池模板: 丁香花在线视频观看免费| jjizz全部免费看片| 亚洲欧洲在线观看| 无码av免费毛片一区二区| 亚洲日韩一中文字暮| 亚洲人成电影网站国产精品| 三年片在线观看免费大全电影| 久久久国产亚洲精品| 亚洲人AV永久一区二区三区久久| 91在线老王精品免费播放| 亚洲AV无码国产剧情| 亚洲av无码国产精品色午夜字幕| 黄色成人网站免费无码av| fc2成年免费共享视频18| 亚洲国产人成在线观看| 久久伊人亚洲AV无码网站| 免费国产作爱视频网站| 四虎影视久久久免费观看| 亚洲性一级理论片在线观看| 亚洲人成无码www久久久| 日本免费网址大全在线观看| 久久国产精品免费一区| 亚洲中文无码永久免| 亚洲AV无码国产精品色午友在线| 免费在线观看理论片| 2021在线观看视频精品免费| 国产97视频人人做人人爱免费| 亚洲人配人种jizz| 亚洲成AV人片在线观看无| 免费a级毛片永久免费| 免费H网站在线观看的| 久久免费线看线看| 日韩大片免费观看视频播放| 亚洲综合久久精品无码色欲| 久久亚洲私人国产精品| 亚洲婷婷五月综合狠狠爱| 免费欧洲毛片A级视频无风险| 中文字幕人成无码免费视频| 久久精品视频免费看| 久久免费99精品国产自在现线| WWW亚洲色大成网络.COM|