summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/examples/Listing3813.java
diff options
context:
space:
mode:
authorSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
committerSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
commit33613a85afc4b1481367fbe92a17ee59c240250b (patch)
tree670b842326116b376b505ec2263878912fca97e2 /Master/Reference Architectures and Patterns/hjp5/examples/Listing3813.java
downloadStudium-master.tar.gz
Studium-master.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/examples/Listing3813.java')
-rw-r--r--Master/Reference Architectures and Patterns/hjp5/examples/Listing3813.java83
1 files changed, 83 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/hjp5/examples/Listing3813.java b/Master/Reference Architectures and Patterns/hjp5/examples/Listing3813.java
new file mode 100644
index 0000000..94958e9
--- /dev/null
+++ b/Master/Reference Architectures and Patterns/hjp5/examples/Listing3813.java
@@ -0,0 +1,83 @@
+/* Listing3813.java */
+
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+import javax.swing.event.*;
+import javax.swing.tree.*;
+
+public class Listing3813
+extends JFrame
+implements ActionListener
+{
+ protected DefaultMutableTreeNode root;
+ protected DefaultTreeModel treeModel;
+ protected JTree tree;
+
+ public Listing3813()
+ {
+ super("JTree 3");
+ addWindowListener(new WindowClosingAdapter(true));
+ //JTree erzeugen und Einfachselektion aktivieren
+ root = new DefaultMutableTreeNode("Root");
+ treeModel = new DefaultTreeModel(root);
+ tree = new JTree(treeModel);
+ TreeSelectionModel tsm = new DefaultTreeSelectionModel();
+ tsm.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
+ tree.setSelectionModel(tsm);
+ tree.setRootVisible(true);
+ //JTree einfügen
+ Container cp = getContentPane();
+ cp.add(new JScrollPane(tree), BorderLayout.CENTER);
+ //ButtonPanel
+ JPanel panel = new JPanel(new FlowLayout());
+ String[] buttons = new String[]{"AddChild", "Delete", "Change"};
+ for (int i = 0; i < buttons.length; ++i) {
+ JButton button = new JButton(buttons[i]);
+ button.addActionListener(this);
+ panel.add(button);
+ }
+ cp.add(panel, BorderLayout.SOUTH);
+ }
+
+ public void actionPerformed(ActionEvent event)
+ {
+ String cmd = event.getActionCommand();
+ TreePath tp = tree.getLeadSelectionPath();
+ if (tp != null) {
+ DefaultMutableTreeNode node;
+ node = (DefaultMutableTreeNode)tp.getLastPathComponent();
+ if (cmd.equals("AddChild")) {
+ DefaultMutableTreeNode child;
+ child = new DefaultMutableTreeNode("child");
+ treeModel.insertNodeInto(child, node, node.getChildCount());
+ TreeNode[] path = treeModel.getPathToRoot(node);
+ tree.expandPath(new TreePath(path));
+ } else if (cmd.equals("Delete")) {
+ if (node != root) {
+ TreeNode parent = node.getParent();
+ TreeNode[] path = treeModel.getPathToRoot(parent);
+ treeModel.removeNodeFromParent(node);
+ tree.setSelectionPath(new TreePath(path));
+ }
+ } else if (cmd.equals("Change")) {
+ String name = node.toString();
+ node.setUserObject(name + "C");
+ treeModel.nodeChanged(node);
+ }
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ try {
+ String plaf = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
+ UIManager.setLookAndFeel(plaf);
+ Listing3813 frame = new Listing3813();
+ frame.setLocation(100, 100);
+ frame.setSize(300, 300);
+ frame.setVisible(true);
+ } catch (Exception e) {
+ }
+ }
+} \ No newline at end of file