【发布时间】: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() 吗?
【问题讨论】: