0

我在 Prefuse 中使用 SpecifiedLayout 时遇到问题。我想在已经预定义的位置设置一些节点。我尝试过使用 AxisLayout。节点设置在正确的位置,但是我不能真正使用 DragControl 或 ZoomControl 的选项。所以我尝试使用SpecifiedLayout。这里的问题是所有节点都设置在相同的位置,而不是我在开始时指定的位置。希望有人可以帮助我解决这个问题。

这是代码:

private static Visualization vis;
graph = new Graph();

graph.addColumn("positionx", Integer.class);
graph.addColumn("positiony", Integer.class);

然后我将预定义的位置添加到“positionx”和“positiony”。然后:

ActionList layout = new ActionList(ActionList.INFINITY);

SpecifiedLayout l = new SpecifiedLayout("graph.nodes","positionx","positiony");
layout.add(l);
layout.add(new RepaintAction());
vis.putAction("layout", layout);

正如我所说,如果我使用 AxisLayout 而不是 SpecifiedLayout:

layout.add(new AxisLayout("graph.nodes","positionx",Constants.X_AXIS));
layout.add(new AxisLayout("graph.nodes","positiony",Constants.Y_AXIS));

节点设置在正确的位置,但无法拖动和缩放。

我真的很感激任何帮助。

谢谢

4

2 回答 2

2

运行后我必须让它工作(定位节点):

vis.run("layout");

在我向图中插入一个新节点之后。

要更新字段,您必须在项目发布后设置字段。

this.addControlListener(new DragControl() {
    @Override
    public void itemReleased(VisualItem item, MouseEvent e) {
        super.itemReleased(item, e);

        item.set("positionX", item.getX());
        item.set("positionY", item.getY());
    }
});
于 2012-09-02T21:21:06.897 回答
0

当您说 AxisLayout 无法进行拖动和缩放时,您是什么意思?只要您添加一个 DragControl 和一个 ZoomControl 拖动和缩放应该可以工作。

例如:

display.addControlListener(new DragControl());
display.addControlListener(new ZoomControl());

那对你有用吗?

于 2012-08-12T07:49:49.683 回答