Ich teste einige Code mit JTree
, und ich bemerkte, dass model.reload()
gibt andere Ausgabe als model.nodeChanged(currentNode)
. Die korrekte Ausgabe wird von model.reload()
erhalten. Hier sind meine zwei Ausgänge für den gleichen Code:JTree model.nodechanged (Node) verliert Daten
Mein Code ist wie folgt:
public class test {
private JFrame frame;
JTree tree;
DefaultMutableTreeNode root;
DefaultTreeModel model;
private Map<String, DefaultMutableTreeNode> treeMap;
public static void main(String[] args) {
test t = new test();
try {
Thread.sleep(1000 * 5);
} catch (Exception e) {
}
t.add_new_folder("Data", "trial 0");
t.add_new_folder("Data/trial 0", "trial 1");
t.add_new_folder("Data/trial 0/trial 1", "trial 2");
t.add_new_folder("Data", "trial 1");
try {
Thread.sleep(1000 * 5);
} catch (Exception e) {
}
t.add_new_folder("Data/trial 1", "trial 2");
t.add_new_folder("Data", "trial 2");
}
public test() {
frame = new JFrame("using reload");
tree = new JTree();
root = new DefaultMutableTreeNode("Data");
model = new DefaultTreeModel(root);
tree.setModel(model);
frame.getContentPane().add(tree, BorderLayout.WEST);
frame.setVisible(true);
frame.setSize(500, 500);
treeMap = new HashMap<>();
treeMap.put("Data", root);
}
public void add_new_folder(String path, String name) {
DefaultMutableTreeNode currentNode = treeMap.get(path);
DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(name);
currentNode.add(childNode);
treeMap.put(path + "/" + name, childNode);
model.reload();
//model.nodeChanged(currentNode);
}
}
Ich brauche auch model.nodeChanged()
zu verwenden, wie es Wege das gleiche im Gegensatz zu model.reload
erweitert hält. Irgendeine Erklärung und wie man repariert?
Verwenden eine logische und konsistente Form von Code-Zeilen und Blöcken Einrücken. Die Einrückung soll den Codefluss leichter nachvollziehen lassen! IDEs haben in der Regel eine [Verknüpfung zum Formatieren von Code] (https://www.google.com.au/?ion=1&espv=2#q=eclipse%20format%20code) .. –
Ich habe das automatische Format aber nicht geholfen –
Nun, viel Glück damit. Das Leben ist zu kurz, um mit unfremiertem Code umzugehen. –