gpt4 book ai didi

java - 随机化 jgraph 中顶点的位置

转载 作者:太空宇宙 更新时间:2023-11-04 07:38:04 25 4
gpt4 key购买 nike

我在 jgraph 的帮助下创建了一个用于可视化的应用程序。我对此有几个问题。

1:我需要根据 Vertex 对象的属性更改 Vertices 的名称。当我使用默认设置运行应用程序时,顶点的名称将打印为 Vertex@c8191c (根据顶点进行更改)。我想将此名称更改为顶点的属性值。

2:这是最关键的。生成的顶点数量不是静态的。数量取决于应用程序的各种其他因素,并且每次应用程序运行时都可能发生变化。当我使用默认设置运行此应用程序时,节点重叠,并且只有一个显示在第一位。我需要在 jgraph 中随机分布节点。

有人可以帮我解决这两个问题吗?如果您需要更多信息,请提及。以下是我的可视化图表的代码。

public void randomizeLocations(JGraph jgraph) {
System.out.println("Visualization 1");
GraphLayoutCache cache = jgraph.getGraphLayoutCache();
System.out.println("Visualization 2");
Random r = new Random();
for (Object item : jgraph.getRoots()) {
System.out.println("Visualization 3");
GraphCell cell = (GraphCell) item;
CellView view = cache.getMapping(cell, true);
Rectangle2D bounds = view.getBounds();
System.out.println("next double"+r.nextDouble()*400);
bounds.setRect(r.nextDouble() * 400, r.nextDouble() * 5,
bounds.getWidth(), bounds.getHeight());

}
System.out.println("Visualization 4");
cache.reload();
System.out.println("Visualization 5");
jgraph.repaint();
System.out.println("Visualization 6");

}

提前谢谢您。

最佳答案

1) 重写 Vertices 对象的 toString 方法。

@Override
public String toString() {
return "Whatever attribute you want to display here";
}

2) 将顶点放入哈希集中。这将确保唯一的顶点仅添加到您的列表中。此外,您需要重写 Vertices 对象的 .equals() 和 .hashCode() 方法以确保唯一性。 (参见此处https://stackoverflow.com/a/27609/441692)。继续生成更多顶点,直到您的 HashSet 大小等于您想要的值。

HashSet<Point2D.Double> unique = new HashSet<Point2D.Double>();
Random r = new Random();
for (Object item : jgraph.getRoots()) {
System.out.println("Visualization 3");
GraphCell cell = (GraphCell) item;
CellView view = cache.getMapping(cell, true);
Rectangle2D bounds = view.getBounds();
int currentSize = unique.size();
double x;
double y;
while (unique.size() == currentSize) {
x = r.nextDouble() * 400;
y = r.nextDouble() * 5;
unique.add(new Point2D.Double(x,y));
}
bounds.setRect(x, y, bounds.getWidth(), bounds.getHeight());
}

关于java - 随机化 jgraph 中顶点的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16496918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com