簡體   English   中英

Prefuse中的SpecifiedLayout不起作用

[英]SpecifiedLayout in Prefuse does not work

我在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));

節點設置為正確的位置,但無法拖動和縮放。

我真的很感激任何幫助。

謝謝

我必須在運行后使其工作(定位節點):

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());
    }
});

當您說AxisLayout無法進行拖動和縮放時,您的意思是什么? 只要添加DragControl和ZoomControl拖動和縮放就可以了。

例如:

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

那對你有用嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM