我正在尝试创建一个 JTree 以显示在我的应用程序中,它将显示我的应用程序的内部数据结构。我使用 HashTable 来初始化我的所有对象,这些对象利用您可以使用 getIndex() 检索的每个对象索引。我正在尝试仅使用要显示的每个对象的名称来创建 JTree
我无法弄清楚如何正确添加节点。我创建了一个新节点,但无法将其作为父节点引用。
在这里,我创建了我的 JTree 和根节点:
JTree tree;
DefaultMutableTreeNode treeRoot = new DefaultMutableTreeNode( "Cave" );
tree = new JTree( treeRoot );
在这里,我创建了一个节点,它代表一个 Party 对象,它是根节点的新子节点:
//DefaultMutableTreeNode newParty.getIndex(); //!Does not work
//DefaultMutableTreeNode newParty.getIndex() = new DefaultMutableTreeNode( newParty.getName() , treeRoot ); //does not work
addNode( newParty.getName(), treeRoot);
下面是 addNode 方法:
static DefaultMutableTreeNode addNode ( String Asset, DefaultMutableTreeNode parent ){
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode( Asset );
parent.add( newNode );
return newNode;
}
在这里,我尝试添加一个作为特定派对节点子节点的 Creature 节点:
findParty = ( newCreature.getParty() );// == index of parent Node in HashMap
if (findParty == 0 ) {
SorcerersCave.theCave.addCreature( newCreature );
addNode ( newCreature.getName(), treeRoot );
}else {
((Party)gameAssets.get( findParty )).addMember( newCreature );
gameAssets.put( newCreature .getIndex(), newCreature );
addNode ( newCreature.getName(), ((Party)gameAssets.get( findParty ).getName() ) );
理想情况下,我想创建由每个对象 int 索引表示的节点,然后我可以将该节点添加到树中,并显示正确的文本和父节点。如您所见,我尝试多次这样做,但似乎没有任何效果。