JButton动态工具提示文本未显示

时间:2014-02-22 05:05:20

标签: java swing tooltip jbutton jcomponent

我想为我的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()之前我的工具提示无效?

1 个答案:

答案 0 :(得分:2)

当您致电setToolTipText()时,您的JButton上会注册听众,以便显示工具提示。这些听众仅在您致电JButton时在setToolTipText()上注册,因为当只有一小部分实际拥有工具提示值时,所有JButton上的工具提示都没有用处

覆盖getToolTipText()方法将返回您指定的String,但仅在您首先在JButton上注册侦听器之后(通过调用setToolTipText()方法)。< / p>

请参阅JButton源代码here,您可以看到它设置了值,然后在ToolTipManager中注册了侦听器。您可以自己注册听众以达到您想要的效果,例如在创建按钮后调用它...

ToolTipManager.sharedInstance().registerComponent(myJButton);