2011-02-08 6 views
2

ちょっと、 Javaのスイングコンポーネントのツールチップの起動を検出する方法はありますか? この場所ではどこから始めるべきか考えています。 歓声ツールヒントを検出するJava

+4

実際の目標をここで説明すると思いますか?これは、有効な目標を達成するための欠陥のある戦略を達成する方法を尋ねるよりも、しばしば生産性が高くなります。 –

+0

ここでの目標は、ツールチップがいつ起動され、どのくらいの期間表示されるのかを検出して、私のチームと私が書いている研究プラットフォームの一部としてこのデータを記録できるようにすることです。 – Alex

答えて

1

あなたはJTooltip要素がComponentListenerを返さ追加して、あなたの特定のコンポーネントにcreateTooltipメソッドを上書きすることができます。例として

:十分であるべきである

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

    }; 

+0

+1 Creative answer! =) – Uhlen

1

私の短い調査では以下のことが示されました。

ツールチップの外観を担当するクラスは、TootipManagerです。すべてのコンポーネントは共有インスタンスを使用するため、このマネージャはシングルトンです。このマネージャの作成を傍受することはできず、捕まえることのできるイベントは発生しません。しかし、マネージャーがツールチップを表示することを決定すると、コンポーネントから​​が呼び出されます。あなたがそのマネージャを知りたいのであれば、それは、あなたのコンポーネント(JButtonの、JListのなど)をサブクラス化し、オーバーライドメソッド​​、あなたがTooltipManager.show()

幸運から呼び出されていることを識別するnew Trowable().getStackTrace()を使用すると呼ばれます。

関連する問題