Mooin,
ich bin am Ende mittlerweile im Inet nix zu finden....
Ich möchte aus einem JTree, der mit Buttons etc. erweitert werden kann, eine XML-Datei abspeichern damit die Nodes, die ich hinzugefügt habe beim nächsten Programmstart wieder geladen werden können, weil sonst lädt er immer nur die "Anfangskonfig."
Mein Code:
Wäre für jede Hilfe dankbar... Auch wenn ihr jetzt Anmerkungen habt zum Programm immer posten verbesserungen etc. würden mich auch freuen... am wichtigsten aber die XML-Sache ^^
Grüße
fl_ex
ich bin am Ende mittlerweile im Inet nix zu finden....
Ich möchte aus einem JTree, der mit Buttons etc. erweitert werden kann, eine XML-Datei abspeichern damit die Nodes, die ich hinzugefügt habe beim nächsten Programmstart wieder geladen werden können, weil sonst lädt er immer nur die "Anfangskonfig."
Mein Code:
Java:
import java.awt.Component;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
public class BebauungsplanTree {
}
class BebauungsplanTreeFrame extends JFrame implements ActionListener {
public BebauungsplanTreeFrame() {
setTitle("Bebauungsplan in K-SIE-4");
setSize(450, 300);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// Tree erstellen
final StartTree startTree = new StartTree();
TreeNode root = startTree.makeSampleTree();
model = new DefaultTreeModel(root);
tree = new JTree(model);
tree.setEditable(true);
Container contentPane = getContentPane();
JScrollPane scrollPane = new JScrollPane(tree);
contentPane.add(scrollPane, "Center");
// Panel und Buttons hinzufügen
JPanel panel = new JPanel();
nachbarpunktBtn = new JButton("add Nachbarpunkt");
nachbarpunktBtn.addActionListener(this);
panel.add(nachbarpunktBtn);
unterpunktBtn = new JButton("add Unterpunkt ");
unterpunktBtn.addActionListener(this);
panel.add(unterpunktBtn);
deleteButton = new JButton("Delete");
deleteButton.addActionListener(this);
panel.add(deleteButton);
pathButton = new JButton("Ort");
pathButton.addActionListener(this);
panel.add(pathButton);
editButton = new JButton("Edit");
editButton.addActionListener(this);
panel.add(editButton);
// noch nicht implementiert!
saveButton = new JButton("Save");
saveButton.addActionListener(this);
panel.add(saveButton);
contentPane.add(panel, "South");
}
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
System.out.println(tree.getSelectionPath());
if (selectedNode == null)
return;
// Markiertes Element löschen
if (event.getSource().equals(deleteButton)) {
if (selectedNode.getParent() != null)
model.removeNodeFromParent(selectedNode);
return;
}
// Pfadausgabe des zuletzt benutzten Objekts
if (event.getSource().equals(pathButton)) {
if (selectedNode.getParent() != null)
JOptionPane.showConfirmDialog((Component) null, "" + tree.getSelectionPath(),
"Pfadangabe", JOptionPane.DEFAULT_OPTION);
return;
}
// SEARCH
System.out.println(tree.getModel().getRoot());
// Save des Trees!
if (event.getSource().equals(saveButton)) {
System.out.println(tree.getModel().getRoot());
if (selectedNode.getParent() != null) {
FileWriter writer = null;
File file = new File("test.txt");
try {
writer = new FileWriter(file, true);
writer.write(String.valueOf(tree));
writer.flush();
} catch (final IOException e) {
e.printStackTrace();
}
}
return;
}
// Umbenennen
if (event.getSource().equals(editButton)) {
String renamePunkt = JOptionPane.showInputDialog("Umbenennen in...");
DefaultMutableTreeNode renameNode = new DefaultMutableTreeNode(renamePunkt);
DefaultMutableTreeNode parent = (DefaultMutableTreeNode) selectedNode.getParent();
if (parent != null) {
int selectedIndex = parent.getIndex(selectedNode);
model.removeNodeFromParent(selectedNode);
model.insertNodeInto(renameNode, parent, selectedIndex);
}
return;
}
// Unterpunkte hinzufügen
String newPunkt = JOptionPane.showInputDialog("Bitte Namen eingeben...");
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(newPunkt);
if (event.getSource().equals(nachbarpunktBtn)) {
DefaultMutableTreeNode parent = (DefaultMutableTreeNode) selectedNode.getParent();
if (parent != null) {
int selectedIndex = parent.getIndex(selectedNode);
model.insertNodeInto(newNode, parent, selectedIndex + 1);
}
} else if (event.getSource().equals(unterpunktBtn)) {
model.insertNodeInto(newNode, selectedNode, selectedNode.getChildCount());
}
// now display new node
TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
private DefaultTreeModel model;
private JTree tree;
private JButton nachbarpunktBtn;
private JButton unterpunktBtn;
private JButton deleteButton;
private JButton pathButton;
private JButton editButton;
// noch nicht implementiert
private JButton saveButton;
}
Wäre für jede Hilfe dankbar... Auch wenn ihr jetzt Anmerkungen habt zum Programm immer posten verbesserungen etc. würden mich auch freuen... am wichtigsten aber die XML-Sache ^^
Grüße
fl_ex