我正在开发一个世界模拟,其中World
代表:
public class World {
Turtle turtle;
// .. basic constructors, getters, setters
}
aTurtle
表示为:
public class Turtle {
List<Turtle> turtles;
// .. basic constructors, getters, setters
}
一个Turtle
站在它的背上,其余turtles
的World
靠在一个上,主要的Turtle
(下面可能有乌龟)。我想在 Swing 中将其表示为 JTree。
所以我编写了一个 JTree 和一个 TreeModel:
JTree tree = new JTree(new WorldModel(world.getTurtle());
public class WorldModel implements TreeModel {
private Turtle = null;
public WorldModel(Turtle turtle) {
this.turtle = turtle;
}
@Override
int getChildCount(Object object) {
return ((Turtle) object).getNumTurtles();
}
@Override
Object getChild(Object parent, int index) {
return ((Turtle) object).getTurtle(index);
}
// etc., you get the overbearing point
}
在我更改Turtle
最初传递给 TreeModel 的构造函数的点之前,这非常有效:
world.getTurtle().removeAllTurtleChildren();
如何更新我的 JList 以反映此更改?我是否必须创建一个新的 TreeModel 并再次设置它?
(如果可能的话,我想远离 DefaultTreeModel。)