내가 World
에 의해 표현되는 세계의 시뮬레이션을 개발하고 :기본 모델이 변경되었다는 것을 TreeModel에 어떻게 알릴 수 있습니까?
public class Turtle {
List<Turtle> turtles;
// .. basic constructors, getters, setters
}
의 turtles
의 백업에 Turtle
스탠드 및 :
public class World {
Turtle turtle;
// .. basic constructors, getters, setters
}
과 Turtle
하는로 표현된다 World
은 주 Turtle
(누구 아래에 거북이가있을 수 있습니다)에 달려 있습니다. Swing에서 이것을 JTree로 표현하고 싶습니다.
그래서 나는 JTree가하고있는 TreeModel까지 코드 :
world.getTurtle().removeAllTurtleChildren();
:
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
}
이 화려 내가 처음하는 TreeModel의 생성자에 전달 된 Turtle
을 변경하는 지점까지 작동을 이 변경을 반영하도록 (듯이) JList를 어떻게 갱신합니까? 새 TreeModel을 만들고 다시 설정해야합니까?
(나는 가능하면 멀리 DefaultTreeModel의에서 체재하고 싶습니다.)
'TreeModel'에는 두 가지 중요한 메소드'addTreeModelListener'와'removeTreeModelListener'가 있습니다. 적절한 이벤트를 구성하고 등록 된 리스너에게 모델의 상태 변경에 대해 알릴 필요가 있습니다. – MadProgrammer
예를 들어'DefaultTreeModel'에서'listenerList'를 사용하는 방법을 살펴보십시오. – trashgod
왜 DefaultTreeModel에서 벗어나고 싶습니까? 그 특별한 이유가 있습니까? –