ユーザの検索によって動的に更新されるようにしたいと考えています。コンソール上の出力から、検索が正常に動作することがわかります。問題はツリーを更新することです。JTextFieldのKeyListenerによって動的なJTreeが更新される
これは私が得たものです。
public class classA {
int id;
String name;
List<ClassB> listOfClassB;
}
public class classB {
int id;
String name;
List<ClassC> listOfClassC;
}
public class classC {
int id;
String name;
}
これらのクラスから、createTree()のクラスリストをループしてJTreeを生成します。
private DefaultMutableTreeNode rootNode;
rootNode = createTree("New", ""); // "New" tells the method to generate the complete tree
treeModel = new DefaultTreeModel(rootNode);
JTree myTree = new JTree(treeModel);
これまでのところとても良いです。今、私は、クラスを検索して、classC.nameまたはclassC.idのStringまたはIntを検索し、検索条件と一致しないすべてのノードを「削除」します。しかし、オブジェクトではなく、対応するツリーノードだけです。ユーザーが検索を終了すると、再びツリー全体を表示することができます。
検索は、JTextFieldとcreateTree(searchOption、searchText)を呼び出すKeyListenerで実装されています。
これまで、removeAllChildren()ですべてのノードを削除してから、検索条件に一致する新しいノードを追加しようとしました。後でTreeModelをリロードすることはここではうまくいかないようです。
createTree(searchOption, searchText);
rootNode.removeAllChildren();
treeModel.reload(rootNode);
どのように私はそれを達成することができますか?
PS:ツリーとデータを同期させないように、ツリーを削除して新しいツリーを作成するように選択しました。
DocumentListenerを使用していただきありがとうございます。モデルをリセットしても機能しませんでした。私は見つけた解決策を掲示した。 – JKB