ツリー内のノードの表示文字列をオプションで変更することをサポートDefaultTreeModel
するオーバーライドが設定されたを使用しています。DefaultMutableTreeNode
以下のコードに示すように、私のフォームでは、新しいノードを別のクラスで作成し、メイン データ型のラッパー クラスを介して渡すことで、ツリーに新しいノードを設定します。新しいオーバーライドされた を作成し、そこDefaultMutableTreeNode
に子を追加し (それぞれAccessPoint
が複数の子ノードを持つノードで表されます)、後で UI で使用するために保存する手順があります。
この方法で初めてノードを追加すると、うまく機能します。次のコードで追加された後続のノードは、実際には に保存されますDefaultTreeModel
が、JTree
は新しいノードで更新されません。
JTree
最初の子が追加された後にデータが入力されないのはなぜですか?
private void populateAccessPointTreeModel(AccessPointDataWrapper wrapper) {
//the pre-created DefaultMutableTreeNode subclass instance is
// stored in the wrapper
DefaultMutableTreeNode accessPointNode =
wrapper.getAccessPointTreeNode();
//this line updates the accessPointTree with the new node (I've looked at the
// value in debug mode, and it does in fact add the node
((DefaultMutableTreeNode) accessPointTree.getRoot()).add(accessPointNode);
//unrelated logic happens down here...
}
必要に応じてノードを作成するコードを含めることができますが、それは問題ではないと思います。