Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 动态更改draw2d地物的工具提示_Java_Eclipse - Fatal编程技术网

Java 动态更改draw2d地物的工具提示

Java 动态更改draw2d地物的工具提示,java,eclipse,Java,Eclipse,我们目前正在使用EclipseDraw2D/GEF作为描述应用程序中流程的信息页面。这基本上由一个大正方形矩阵组成,每个大正方形矩阵包含一个小正方形矩阵。我们最初将所有的正方形都作为GEF对象,但由于显示了大量的正方形,我们发现其缩放效果不太好,视图需要很长时间才能打开。然后我们改变了它,只有大的正方形是图形,然后我们使用paintFigure中的图形绘制小的正方形 我们遇到的问题是,我们仍然希望工具提示根据您悬停在哪个小正方形上而改变。我试图通过添加一个mouseMotionListener并

我们目前正在使用EclipseDraw2D/GEF作为描述应用程序中流程的信息页面。这基本上由一个大正方形矩阵组成,每个大正方形矩阵包含一个小正方形矩阵。我们最初将所有的正方形都作为GEF对象,但由于显示了大量的正方形,我们发现其缩放效果不太好,视图需要很长时间才能打开。然后我们改变了它,只有大的正方形是图形,然后我们使用paintFigure中的图形绘制小的正方形

我们遇到的问题是,我们仍然希望工具提示根据您悬停在哪个小正方形上而改变。我试图通过添加一个mouseMotionListener并通过setTooltip设置工具提示来实现这一点,具体取决于鼠标当前所在的位置。问题是,一旦显示了工具提示,调用setTooltip时,它就不再更改

有没有人知道另一种方法?有没有一种方法可以获取viewpart的PopUpulper并使用它?任何帮助都将不胜感激


谢谢。。有趣的问题。因为您在图形中绘制了自己的网格,所以我认为您有两种选择

  • 尝试发布SWT事件来愚弄Eclipse。我会尝试先失去焦点,然后获得焦点,以触发工具提示机制,在这一点上,您可以获得坐标并显示适当的内容

  • 根本不要使用Figure#getTooltip策略。只需展示你自己的合成图


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

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

    您可以使用如下方法:

    受保护标签工具提示标签

    受保护的void updateToolTip(字符串文本、图像图标){
    toolTipLabel.setText(文本);
    toolTipLabel.setIcon(图标);
    设置工具提示(工具提示标签);
    }

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


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

    你能发布代码片段吗?谢谢,我没有想到发布SWT事件。好主意。同时,我已经实施了选项2,这已经足够好了。如果这对你有效,你能把它标记为正确答案吗?它给出了分数-谢谢。:-)