程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 控制Swing中ToolTip的顯示與隱藏

控制Swing中ToolTip的顯示與隱藏

編輯:關於JAVA

先給出兩個控制方法

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**的方法進行設置 。

以下是測試代碼

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);
  }

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved