Java 使用具有自定义节点和边的持久布局
我正在使用Jung库创建图形。我想使用持久化布局每次生成相同的图形 我复制粘贴了此工作代码: ? 我所改变的只是正在创建的图表。我创建的图形具有自定义节点和边。但现在,当我尝试恢复时,我使用eclipse获得即时消息:Java 使用具有自定义节点和边的持久布局,java,layout,nodes,jung,Java,Layout,Nodes,Jung,我正在使用Jung库创建图形。我想使用持久化布局每次生成相同的图形 我复制粘贴了此工作代码: ? 我所改变的只是正在创建的图表。我创建的图形具有自定义节点和边。但现在,当我尝试恢复时,我使用eclipse获得即时消息: Exception in thread "main" java.lang.Error: Unresolved compilation problem: at helloworld.main.main(main.java:161) 当我转到eclipsei中的problems
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
at helloworld.main.main(main.java:161)
当我转到eclipsei中的problems视图时,我在控制台上看到了两个错误:
1令牌上的语法错误;,{应在该令牌之后
这是一行:
BufferedReader reader = new BufferedReader(new FileReader("Topology2.csv"));
2Syntax错误,插入}以完成块
这是一行:
PersistentLayout<nodes,Edges> persistentLayout;
自定义节点的代码:
package helloworld;
import java.io.Serializable;
public class nodes {
String name = "";
nodes next = null;
nodes prev = null;
boolean alarm = false;
String alarmLevel = "";
String alarmCaption = "";
String alarmInfo = "";
public nodes(String na) {
name = na;
}
public nodes(String na, String n, String p, boolean a, String lvl, String cap, String info) {
name = na;
next = new nodes();
prev = new nodes();
next.name = n;
prev.name = p;
alarm = a;
alarmLevel = lvl;
alarmCaption = cap;
alarmInfo = info;
}
public nodes() {
// TODO Auto-generated constructor stub
}
}
在节点构造函数中,您正在分配next.name,但从未初始化next,该值为null。这至少是你问题的一部分 旁注:您的edge类引用了两个nodes对象,没有明显的原因,而且我也不确定prev和next在nodes类中的作用
您需要弄清楚您的数据模型应该是什么,并记住Graph类正在跟踪节点/边缘连接。我得到java.lang.NullPointerException在一百万个位置不是很有帮助;更有用的是其中一个的堆栈跟踪。如果现有代码和新代码之间的唯一区别是自定义对象,那么我怀疑它们有问题……而且您没有为它们包含代码,因此无法检查。Iv在说明中添加了自定义节点和边的代码。我修复了下一个和上一个节点的初始化:下一个=新节点;prev=新节点;edge类中的对象没有被使用,所以我将它们注释掉。我已经更新了描述中的当前问题。非常感谢您的帮助。很抱歉,正在使用edge类中的对象,它们表示由edge连接的2个节点。图形已经在维护每个edge的节点;你不需要,但这不应该是个问题,对吗?请看最新的描述。我刚刚看到你是荣格的创造者之一。我用它来表示一个用节点和边表示的实时网络。我的最终目标是每10分钟刷新一次,以创建顶点位于相同位置的完全相同的图形。只有节点在其对象中具有更新的信息,我可以使用这些信息来更改节点的颜色,以在下次打印图形时表示报警。这是最好的方法吗?
public class Edges {
int id;
nodes start;
nodes end;
public Edges(int id_, nodes a, nodes b) {
id = id_;
start = a;
end = b;
}
}
package helloworld;
import java.io.Serializable;
public class nodes {
String name = "";
nodes next = null;
nodes prev = null;
boolean alarm = false;
String alarmLevel = "";
String alarmCaption = "";
String alarmInfo = "";
public nodes(String na) {
name = na;
}
public nodes(String na, String n, String p, boolean a, String lvl, String cap, String info) {
name = na;
next = new nodes();
prev = new nodes();
next.name = n;
prev.name = p;
alarm = a;
alarmLevel = lvl;
alarmCaption = cap;
alarmInfo = info;
}
public nodes() {
// TODO Auto-generated constructor stub
}
}