これが私のアプリケーションです。
私がやりたいことは、ユーザーの詳細が更新されると、JTree のノードも更新されるようにすることです。これは可能ですか?JTree とそのレンダリングされたセルは既に作成されていますが?
既に作成された後でも、レンダリングされたセルを更新する例が必要です。
ここに私のビューコードがあります:
void createTree() {
rootNode = new DefaultMutableTreeNode("users");
for (User user : listOfUsers) {
String id = user.getId();
File file = new File(id);
DefaultMutableTreeNode node = new DefaultMutableTreeNode(file);
rootNode.add(node);
}
treeModel = new DefaultTreeModel(rootNode);
tree = new JTree(rootNode);
}
void addTreeModelListener(TreeModelListener a) {
treeModel.addTreeModelListener(a);
}
void repaintTree() {
treeModel.reload();
tree.revalidate();
tree.repaint();
}
そして、ここに私のコントローラーコードがあります:
view.addTreeModelListener(new MyTreeModelListener());
class MyTreeModelListener implements TreeModelListener {
public void treeNodesChanged(TreeModelEvent e) {
DefaultMutableTreeNode node;
node = (DefaultMutableTreeNode)(e.getTreePath().getLastPathComponent());
int index = e.getChildIndices()[0];
node = (DefaultMutableTreeNode)(node.getChildAt(index));
System.out.println("The user has finished editing the node.");
System.out.println("New value: " + node.getUserObject());
}
public void treeNodesInserted(TreeModelEvent e) {}
public void treeNodesRemoved(TreeModelEvent e) {}
public void treeStructureChanged(TreeModelEvent e) {}
}
オブジェクトに変更を加えた後、repaintTree() メソッドを呼び出します。今コードを調べた後、問題はノードの詳細ではなくオブジェクトの詳細を変更しているという事実にあると思いますが、それは単なる直感です。
すぐに返信してください、どうもありがとう。