动态更改draw2d图形的工具提示

时间:2009-09-23 13:59:45

标签: java eclipse

我们目前正在使用Eclipse Draw2D / GEF来描述我们应用程序中的流程的信息页面。这基本上由大正方形矩阵组成,每个正方形包含较小正方形的矩阵。我们最初把所有的正方形作为GEF对象,但是由于它们的大量展示,我们发现它不能很好地扩展并且视图需要很长时间才能打开。然后我们改变了它,只有大的正方形是数字,然后我们使用paintFigure中的图形绘制较小的正方形。

我们遇到的问题是我们仍然希望工具提示根据您悬停的小方块而改变。我尝试通过添加mouseMotionListener并通过setTooltip设置工具提示来实现此目的,具体取决于鼠标当前的位置。问题是,一旦显示工具提示,调用setTooltip时它就不会再改变。

有没有人知道这样做的另一种方法?有没有办法获得viewpart的PopupHelper并使用它?任何帮助将不胜感激。

由于

2 个答案:

答案 0 :(得分:1)

Hmnn ..有趣的问题。既然您在图中绘制了自己的Grid,我认为您有两种选择。

  1. 尝试发布SWT事件来愚弄Eclipse。我会尝试一个焦点丢失,然后是一个聚焦获得,触发工具提示机器,此时你可以获得坐标并显示适当的内容。

  2. 根本不要使用Figure#getTooltip策略。只需展示自己的复合材料。

答案 1 :(得分:1)

要动态更改工具提示,您可以在父图中保存工具提示图的实例。在父图的构造函数中,创建一个新的工具提示图(例如一个Label)并使用setToolTip()方法将工具提示图设置为父图。

更改数据模型后,可以将更新的工具提示文本/图标设置为工具提示图。然后你再次调用setToolTip(tooltipFigure)方法。

您可以使用以下方法:

  

protected Label toolTipLabel;

     

protected void updateToolTip(String text,Image icon){
  toolTipLabel.setText(文本);
  toolTipLabel.setIcon(图标);
  setToolTip(toolTipLabel);
  }

可以在父图的conturctor中调用updateToolTip()方法来初始化工具提示。每次更改数据模型后都可以调用此方法。

我在代码中遇到了同样的问题,并用该方法解决了问题。在我的代码中,我在parentFigure.paintFigure()方法中调用了updateToolTip()。