2011-02-08 31 views
2

嘿, 有沒有什麼方法可以檢測Java中的swing組件上的工具提示的啓動?甚至不能想到從這一開始。 歡呼聲檢測工具提示啓動java

+4

你能想到在這裏解釋一下實際的目標嗎?這通常比詢問如何實現旨在實現有效目標的錯誤策略更有效率,這很可能是。 – 2011-02-08 18:08:13

+0

這裏的目標是檢測何時啓動工具提示並查看多久,以便我可以記錄此數據,因爲它是我和我的團隊編寫的研究平臺的一部分 – Alex 2011-02-12 15:12:10

回答

1

您可以在您的特定組件上覆蓋createTooltip方法,添加JTooltip元素返回ComponentListener

舉個例子:

final ComponentListener customTooltipListener=new ComponentListener() { 

     @Override 
     public void componentHidden(ComponentEvent e) { 
      // whatever you need on this event 
     } 

     @Override 
     public void componentMoved(ComponentEvent e) { 
      // whatever you need on this event 
     } 

     @Override 
     public void componentResized(ComponentEvent e) { 
      // whatever you need on this event 

     } 

     @Override 
     public void componentShown(ComponentEvent e) { 
      // whatever you need on this event 

     } 
    };   

    JButton button=new JButton("Command") { 

     @Override 
     public JToolTip createToolTip() { 
      //keep default behaviour 
      JToolTip toReturn=super.createToolTip(); 
      toReturn.addComponentListener(customTooltipListener); 
      return toReturn; 
     } 

    }; 

這應該是足夠的。

1

我的簡短調查顯示如下。

負責工具提示外觀的類是TootipManager。所有組件都使用它的共享實例,所以這位經理是單身人士。你不能攔截創建這個管理器,也不會拋出你可以捕獲的事件。但是當經理決定顯示工具提示時,它會從組件中調用​​。所以,如果你想知道該經理稱它繼承您的組件(JButton的,JList的等),重寫方法​​和使用new Trowable().getStackTrace()來確定你是從TooltipManager.show()

好運調用。