当试图显示标签的重量时,使用jGraphT的java.lang.InstanceionException
大家好,我正在尝试使用jGraphT显示一个图形。我想显示边的权重,而不是用源注释和目标注释的名称标记边。为此,我创建了一个传统类,以这种方式覆盖DefaultWeightedEdge的toString方法当试图显示标签的重量时,使用jGraphT的java.lang.InstanceionException,java,exception,jgrapht,instantiationexception,Java,Exception,Jgrapht,Instantiationexception,大家好,我正在尝试使用jGraphT显示一个图形。我想显示边的权重,而不是用源注释和目标注释的名称标记边。为此,我创建了一个传统类,以这种方式覆盖DefaultWeightedEdge的toString方法 class MyWeightedEdge extends DefaultWeightedEdge { @Override public String toString() { return Double.toString(getWeight()
class MyWeightedEdge extends DefaultWeightedEdge {
@Override
public String toString() {
return Double.toString(getWeight());
}
}
我在任何地方都使用MyWeightedEdge,而不是使用DefaultWeightedEdge,但是我得到了一个
java.lang.InstanceionException
Exception in thread "main" java.lang.RuntimeException: Edge factory failed
at org.jgrapht.graph.ClassBasedEdgeFactory.createEdge(ClassBasedEdgeFactory.java:86)
at org.jgrapht.ext.JGraphModelAdapter$ShieldedGraph.addEdge(JGraphModelAdapter.java:1091)
at org.jgrapht.ext.JGraphModelAdapter.handleJGraphInsertedEdge(JGraphModelAdapter.java:506)
at org.jgrapht.ext.JGraphModelAdapter.handleJGraphChangedEdge(JGraphModelAdapter.java:474)
at org.jgrapht.ext.JGraphModelAdapter$JGraphListener.handleChangedEdges(JGraphModelAdapter.java:964)
at org.jgrapht.ext.JGraphModelAdapter$JGraphListener.graphChanged(JGraphModelAdapter.java:893)
at org.jgraph.graph.DefaultGraphModel.fireGraphChanged(Unknown Source)
at org.jgraph.graph.DefaultGraphModel$GraphModelEdit.execute(Unknown Source)
at org.jgraph.graph.DefaultGraphModel.insert(Unknown Source)
at org.jgrapht.ext.JGraphModelAdapter.internalInsertCell(JGraphModelAdapter.java:769)
at org.jgrapht.ext.JGraphModelAdapter.handleJGraphTAddedEdge(JGraphModelAdapter.java:651)
at org.jgrapht.ext.JGraphModelAdapter$JGraphTListener.edgeAdded(JGraphModelAdapter.java:1036)
at org.jgrapht.graph.DefaultListenableGraph.fireEdgeAdded(DefaultListenableGraph.java:317)
at org.jgrapht.graph.DefaultListenableGraph.addEdge(DefaultListenableGraph.java:182)
at Visual.JGraphAdapterDemo.init(JGraphAdapterDemo.java:135)
at Visual.JGraphAdapterDemo.<init>(JGraphAdapterDemo.java:89)
at world.Conection.paint(Conection.java:268)
at world.Conection.<init>(Conection.java:56)
at world.Conection.main(Conection.java:44)
Caused by: java.lang.InstantiationException: Visual.JGraphAdapterDemo$MyWeightedEdge
at java.lang.Class.newInstance(Unknown Source)
at org.jgrapht.graph.ClassBasedEdgeFactory.createEdge(ClassBasedEdgeFactory.java:84)
... 18 more
线程“main”java.lang.RuntimeException中的异常:边缘工厂失败
位于org.jgrapht.graph.ClassBasedEdgeFactory.createEdge(ClassBasedEdgeFactory.java:86)
位于org.jgrapht.ext.JGraphModelAdapter$shieldegraph.addEdge(jgraphmodelapter.java:1091)
位于org.jgrapht.ext.JGraphModelAdapter.handlejgraphInsertedge(JGraphModelAdapter.java:506)
位于org.jgrapht.ext.JGraphModelAdapter.handlejgraphchangedge(jgraphmodelapter.java:474)
位于org.jgrapht.ext.JGraphModelAdapter$JGraphListener.handleChangedGes(JGraphModelAdapter.java:964)
位于org.jgrapht.ext.JGraphModelAdapter$JGraphListener.graphChanged(JGraphModelAdapter.java:893)
位于org.jgraph.graph.DefaultGraphModel.fireGraphChanged(未知来源)
位于org.jgraph.graph.DefaultGraphModel$GraphModelEdit.execute(未知源)
位于org.jgraph.graph.DefaultGraphModel.insert(未知源)
位于org.jgrapht.ext.JGraphModelAdapter.internalInsertCell(JGraphModelAdapter.java:769)
位于org.jgrapht.ext.JGraphModelAdapter.handlejgraphtaddedge(JGraphModelAdapter.java:651)
位于org.jgrapht.ext.JGraphModelAdapter$JGraphTListener.edgeaded(JGraphModelAdapter.java:1036)
位于org.jgrapht.graph.DefaultListenableGraph.FireEded(DefaultListenableGraph.java:317)
位于org.jgrapht.graph.DefaultListenableGraph.addEdge(DefaultListenableGraph.java:182)
位于Visual.JGraphAdapterDemo.init(JGraphAdapterDemo.java:135)
在Visual.JGraphAdapterDemo上(JGraphAdapterDemo.java:89)
在world.conconnect.paint(conconnect.java:268)
在world.conconnect.(conconnect.java:56)
位于world.conconnect.main(conconnect.java:44)
原因:java.lang.InstanceException:Visual.JGraphAdapterDemo$MyWeightedEdge
位于java.lang.Class.newInstance(未知源)
位于org.jgrapht.graph.ClassBasedEdgeFactory.createEdge(ClassBasedEdgeFactory.java:84)
... 还有18个
我将感谢任何帮助。谢谢。我也有同样的问题。我在另一个类文件中有MyWeightedEdge类的代码。我把它放在它自己的文件中(作为一个公共类),然后ClassBasedGeFactory可以看到它并实例化它 我也有同样的问题。我在另一个类文件中有MyWeightedEdge类的代码。我把它放在它自己的文件中(作为一个公共类),然后ClassBasedGeFactory可以看到它并实例化它 在这种情况下,您可以尝试在派生类中添加构造函数,如下所示:
class MyWeightedEdge extends DefaultWeightedEdge {
//add this constructor
public MyWeightedEdge() {
super();
}
@Override
public String toString() {
return Double.toString(getWeight());
}
}
在我的例子中,它工作得很好,希望它也能为您工作。在这种情况下,您可以尝试在派生类中添加构造函数,如下所示:
class MyWeightedEdge extends DefaultWeightedEdge {
//add this constructor
public MyWeightedEdge() {
super();
}
@Override
public String toString() {
return Double.toString(getWeight());
}
}
就我而言,它工作得很好,希望它也能为您工作。我也有一个嵌套类。让它成为公共静态类MyWeightedEdge类{…}就足够了。我不必把它放在自己的文件中……我也有一个嵌套类。让它成为公共静态类MyWeightedEdge类{…}就足够了。我不必把它放在自己的档案里。。。