アプリケーションの内部データ構造を表示するアプリケーションに表示する 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;
}
ここでは、特定の Party ノードの子である 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 インデックスで表されるノードを作成し、そのノードをツリーに追加して、正しいテキストと親を表示することができます。ご覧のとおり、これを数回実行しようとしましたが、実際には何も定着していないようです。