2011-02-08 62 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()

好运调用。