У меня есть компонент swing, для которого я переопределил getToolTipText (MouseEvent), чтобы получить настраиваемые подсказки для разных мест мыши в компоненте. Я хочу добиться того, что всплывающие подсказки не должны отображаться для определенных мест мыши.Toggling Dynamic Tooltip - java swing
Я попытался вернуть null внутри getToolTipText (MouseEvent), когда мышь находится в этих недопустимых местоположениях, но это вызывает исключение нулевого указателя. Если я верну пустую строку, я получаю ожидаемое поведение в 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
}
}
Итак, как мне динамически включать/отключать всплывающие подсказки на основе местоположения мыши в компоненте? Должен ли я попытаться использовать ToolTipManager.sharedInstance(). RegisterComponent() и unregisterComponent() внутри mouseMoved() компонента?
Спасибо! Я думал о попытке setToolTipText (null), но не знал, что вернуть. Это прекрасно работает! –