How can I persist all changes I made to these edited leaves and nodes?
Dear all friends:
sorry to bother,
I have following code can edit the leaf of the JTree,
But after i edit it, I found what I updated is lost, How can I persist all changes I made to these edited leaves and nodes(not leaf).
ie, to keep all these changes until i update them later.
Foe Example, I change node name from "blue" in Directory of Color to "NewHouse", then after I exit editing, node not return to blue but keep "NewHouse".
thanks
sunny
import java.awt.BorderLayout;
import java.util.EventObject;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeCellEditor;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreeCellEditor;
import javax.swing.tree.TreeNode;
publicclass EditLeafSample{
publicstaticvoid main(String args[]){
JFrame frame =new JFrame("Editable Tree");
JTree tree =new JTree();
tree.setEditable(true);
DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) tree.getCellRenderer();
TreeCellEditor editor =new LeafCellEditor(tree, renderer);
tree.setCellEditor(editor);
JScrollPane scrollPane =new JScrollPane(tree);
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
}
}
class LeafCellEditorextends DefaultTreeCellEditor{
public LeafCellEditor(JTree tree, DefaultTreeCellRenderer renderer){
super(tree, renderer);
}
public LeafCellEditor(JTree tree, DefaultTreeCellRenderer renderer,
TreeCellEditor editor){
super(tree, renderer, editor);
}
publicboolean isCellEditable(EventObject event){
// Get initial setting
boolean returnValue = super.isCellEditable(event);
// If still possible, check if current tree node is a leaf
if (returnValue){
Object node = tree.getLastSelectedPathComponent();
if ((node !=null) && (nodeinstanceof TreeNode)){
TreeNode treeNode = (TreeNode) node;
returnValue = treeNode.isLeaf();
}
}
return returnValue;
}
}

