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

    主站蜘蛛池模板: 久久国产精品一区免费下载| 免费国产a理论片| 无码囯产精品一区二区免费| 亚洲人午夜射精精品日韩| 色婷婷精品免费视频| 永久久久免费浮力影院| 亚洲妇女熟BBW| 真实乱视频国产免费观看| 亚洲a无码综合a国产av中文| 在线看片无码永久免费aⅴ| 日韩欧美亚洲中文乱码| 免费va人成视频网站全| 久久最新免费视频| 亚洲gv猛男gv无码男同短文| 91高清免费国产自产拍2021| 亚洲人成日本在线观看| 永久中文字幕免费视频网站| 搜日本一区二区三区免费高清视频 | 久久精品国产亚洲AV未满十八| 免费国产在线观看老王影院| 精品国产_亚洲人成在线| 亚洲色偷偷狠狠综合网| 四虎国产成人永久精品免费| 亚洲精品高清国产麻豆专区| 成全视频免费高清 | 亚洲成片观看四虎永久| 成年女人A毛片免费视频| 亚洲男人的天堂在线播放| 国产免费AV片在线播放唯爱网| 亚洲高清国产拍精品熟女| 亚洲国产专区一区| 香港a毛片免费观看 | 国产精品青草视频免费播放| 亚洲AV人无码激艳猛片| 午夜无遮挡羞羞漫画免费| 午夜成人无码福利免费视频| 边摸边吃奶边做爽免费视频99| 在线观看免费精品国产| 久久国产乱子伦精品免费一 | va亚洲va日韩不卡在线观看| 国产成人无码区免费网站|