我想为我的JButton
提供动态工具提示,因此我使用类似的方法来覆盖getToolTipText()
方法......
JButton myJButton=new JButton("My Button"){
public String getToolTipText(MouseEvent evt){
ToolTipManager.sharedInstance().setInitialDelay(100);
ToolTipManager.sharedInstance().setDismissDelay(60000);
return "Test Tip Here";
} // Return plain text now, will be replaced by calculateTipText() later
};
当我有这个代码时,根本没有显示工具提示。
但是,如果我添加这样的另一行......
myJButton.setToolTipText("Hi");
在此之后,工具提示将正确显示为Test Tip Here
。
为什么在我致电setToolTipText()
之前我的工具提示无效?
答案 0 :(得分:2)
当您致电setToolTipText()
时,您的JButton
上会注册听众,以便显示工具提示。这些听众仅在您致电JButton
时在setToolTipText()
上注册,因为当只有一小部分实际拥有工具提示值时,所有JButton
上的工具提示都没有用处
覆盖getToolTipText()
方法将返回您指定的String
,但仅在您首先在JButton
上注册侦听器之后(通过调用setToolTipText()
方法)。< / p>
请参阅JButton
源代码here,您可以看到它设置了值,然后在ToolTipManager
中注册了侦听器。您可以自己注册听众以达到您想要的效果,例如在创建按钮后调用它...
ToolTipManager.sharedInstance().registerComponent(myJButton);