【问题标题】:Toggling Dynamic Tooltip - java swing切换动态工具提示 - java swing
【发布时间】:2014-11-15 04:28:12
【问题描述】:

我有一个 swing 组件,为此我重写了 getToolTipText(MouseEvent) 以获取组件内不同鼠标位置的自定义工具提示。我想要实现的是某些鼠标位置不得显示工具提示。

当鼠标位于这些无效位置时,我尝试在 getToolTipText(MouseEvent) 中返回 null,但这会导致空指针异常。如果我返回一个空字符串,我会在 OS X 上得到预期的行为(不显示工具提示)。但在 Linux 上会显示一个空的工具提示。

public String getToolTipText(MouseEvent evt) {
    if(mouseInCorrectRegion(evt)) {
      return "A tooltip!";
    }
    else {
      //No tooltip displayed on OS X, but 
      //empty tooltip displayed on Linux
      return ""; 

      // return null; //Causes NPE randomly 
    }
}

那么,如何根据组件内的鼠标位置动态启用/禁用工具提示?我应该尝试在组件的 mouseMoved() 中使用 ToolTipManager.sharedInstance().registerComponent() 和 unregisterComponent() 吗?

【问题讨论】:

    标签: java swing


    【解决方案1】:

    根据the Swing tutorialthe documentation for JComponent.setToolTipText,将 null 传递给 setToolTipText 将关闭工具提示,因此您可以这样做:

    @Override
    public String getToolTipText(MouseEvent event) {
        if (mouseInCorrectRegion(event)) {
            setToolTipText("A tooltip");
        } else {
            setToolTipText(null);
        }
        return super.getToolTipText(event);
    }
    

    【讨论】:

    • 谢谢!我曾想过尝试 setToolTipText(null) 但不确定要返回什么。这非常有效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多