SWT中的工具提示可见性

时间:2014-02-26 05:35:06

标签: java eclipse-plugin swt eclipse-rcp

我有一个显示标签的类。当我将鼠标悬停在该标签上时,会显示一个空的工具提示。我想删除该工具提示(我的意思是我不希望它显示)。我可以轻松地说tooltip.setVisibility(false)但我不应该更改MouseTrackListener Anonymous类中的代码。我需要在其他地方使用toltip属性pr,这样当我扩展这个类时,我需要有一个选项,可以在需要时轻松设置此工具提示的可见性,或者在不需要时禁用它。

这是我的代码段(JAVA SWT)

tooltip = new ToolTip(parent.getShell(), SWT.NONE);

MouseTrackListener mouseTrackListener = new MouseTrackListener() {
@Override
public void mouseEnter(MouseEvent e) {
    if (text != null && !text.isEmpty()) {                       
      tooltip.setLocation(Display.getCurrent().getCursorLocation().x, 
       Display.getCurrent().getCursorLocation().y + TOOLTIP_OFFSET_Y);
       tooltip.setVisible(true);
   }
}

@Override
public void mouseExit(MouseEvent e) {
     if (text != null && !text.isEmpty()) {
          tooltip.setVisible(false);
     }
}

@Override
public void mouseHover(MouseEvent e) {
}};

label.addMouseTrackListener(mouseTrackListener);
iconLabel.addMouseTrackListener(mouseTrackListener);

2 个答案:

答案 0 :(得分:0)

不太确定你想做什么。只需隐藏空工具提示或在显示提示时控制? 也许这符合您的需求:

private boolean showToolTip = true;
tooltip = new ToolTip(parent.getShell(), SWT.NONE);

public void setShowToolTip (boolean show){
   showToolTip = show;
}

MouseTrackListener mouseTrackListener = new MouseTrackListener() {
    @Override
public void mouseEnter(MouseEvent e) {
    if (text != null && !text.isEmpty()) {
      tooltip.setLocation(Display.getCurrent().getCursorLocation().x, 
      Display.getCurrent().getCursorLocation().y + TOOLTIP_OFFSET_Y);
      if (showToolTip){
         tooltip.setVisible(true);
      } else {
         tooltip.setVisible(false);
   }
}

或者您是否想要一个解决方案,其中您的MouseTrackListerner实例中的代码不会更改?

答案 1 :(得分:0)

您可以尝试 ToolTip的 setAutoHide(boolean autoHide)属性。 (没用过,所以不确定)

if(text == null || text.isEmpty()) {
    tooltip.setAutoHide(true);
}

这有帮助吗?