2

我被赋予了这项任务,如果有人真的提供帮助,我将不胜感激。我通过GMF搭建了一个Graphical Model,如下图;

在此处输入图像描述

如您所见,模型中的一个节点已被选中。这里的任务是创建一个带有表格的 Eclipse 视图,该表格将在选择所谓的“城市节点”时自动更新。正如您可能从模型中猜到的那样,该表应该包含到所有城市的路径成本。稍后我将扩展我的解决方案以包含修改后的 Dijkstra 算法,但现在我被困在创建表格视图中。

我尝试使用 TableViewer 构建它,但它似乎相当复杂,因为我们需要在 ContentProvider 上设置表格的输入,但这里的扭曲是因为我们需要一个 SelectionListener 来获取城市坐标(因为它被命令计算路径-通过两个连接城市之间的距离除以图中连接街道上显示的最大速度的成本)以及当前选择的城市,路径成本需要在收到时自动计算并显示在表格中的点击事件。这意味着我们需要以某种方式更新将在每次选择更改时传递给 ContentProvider 的输入。

有关更多信息,我通过 ISelectionListener 接口的 selectionChanged 方法获取当前选择,并在此方法中将城市信息放入数组列表中。但是,尽管我在方法之外将这个数组列表声明为公共的,但我似乎无法从方法外部访问它,因此无法将它传递给 contentProvider。最终无法更新表的输入。我试着把这篇文章写得尽可能简单,希望你们能帮助我。由于我现在无法预见应该做什么,我将不胜感激。

4

1 回答 1

1

你在正确的轨道上!

在您的选择侦听器的ISelectionListener.selectionChanged方法中,您只需为查看器设置新的输入TableViewer.setInput。然后,IStructuredContentProvider.inputChanged在内容提供者上为查看者调用该方法。在这里,您可以使用新输入来完成您的工作,并使用TableViewer.refresh.

您也可以使用 JFace 数据绑定框架,但我认为您应该可以接受我上面提到的内容。

于 2012-11-10T11:24:10.910 回答