Java 更新zest 2中节点的标签/图标
我正在使用带有SpaceTreeLayout算法的GraphViewer,并尝试在创建图形后更新节点的标签/图标 已经测试过的Java 更新zest 2中节点的标签/图标,java,eclipse-rcp,zest,Java,Eclipse Rcp,Zest,我正在使用带有SpaceTreeLayout算法的GraphViewer,并尝试在创建图形后更新节点的标签/图标 已经测试过的 viewer.refresh(node, true); 及 与查看器或其图形控件的各种刷新/重画方法结合使用,但没有成功 有关查看器使用的更多详细信息: GraphViewer viewer = new GraphViewer(parent, SWT.BORDER); ArrayContentProvider content = new MyArrayContentP
viewer.refresh(node, true);
及
与查看器或其图形控件的各种刷新/重画方法结合使用,但没有成功
有关查看器使用的更多详细信息:
GraphViewer viewer = new GraphViewer(parent, SWT.BORDER);
ArrayContentProvider content = new MyArrayContentProvider(..);
viewer.setContentProvider(content);
LabelProvider glp = new MyGraphLabelProvider(..);
viewer.setLabelProvider(glp);
List<MyNodeClass> nodes = .. //list of all node elements
viewer.setInput(nodes);
TriangleSubgraphFactory subGraphFactory = new TriangleSubgraphFactory();
SpaceTreeLayoutAlgorithm spaceTreeAlg = new SpaceTreeLayoutAlgorithm();
viewer.getGraphControl().setSubgraphFactory(subGraphFactory);
viewer.getGraphControl().setExpandCollapseManager(
spaceTreeAlg.getExpandCollapseManager());
viewer.setLayoutAlgorithm(spaceTreeAlg, true);
以下用于刷新,但这不可能是预期用途:
GraphLabelProvider glp
GraphNode n = viewer.getGraphModelNode(node);
n.setText(glp.getText(node));
n.setImage(glp.getImage(node));
我不确定您到底是如何使用查看器的,但最简单的方法可能是将查看器的输入重置为要可视化的新数据(您在内容和标签提供程序中处理这些数据)。设置输入时,图形将自动更新:
viewer.setInput(myChangedDataToBeVisualized);
这会触发整个图形的更新吗?如果我只需要更新一个节点,那将是非常低效的。我是否使用了viewer.refresh错误,如果我想触发单个节点的刷新,应该如何使用它?以后使用viewer.setInput会导致异常。我添加了更多关于我的查看器使用情况的信息,可能我在那里做错了什么。
GraphLabelProvider glp
GraphNode n = viewer.getGraphModelNode(node);
n.setText(glp.getText(node));
n.setImage(glp.getImage(node));
viewer.setInput(myChangedDataToBeVisualized);