Java 使用具有自定义节点和边的持久布局

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

我正在使用Jung库创建图形。我想使用持久化布局每次生成相同的图形

我复制粘贴了此工作代码: ?

我所改变的只是正在创建的图表。我创建的图形具有自定义节点和边。但现在,当我尝试恢复时,我使用eclipse获得即时消息:

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
}
}