package javacodebook.gui.tree; import javax.swing.*; import javax.swing.tree.*; import java.awt.event.*; import java.awt.*; /** * Die TreeJFrame besteht aus zwei Bereichen, im Linken befinden sich ein * Baum, im Rechten nur ein leeres Panel. */ public class TreeJFrame extends JFrame { private JPanel left = new JPanel(); private JPanel right = new JPanel(); // Knoten für den Baum werden erstellt private DefaultMutableTreeNode names = new DefaultMutableTreeNode("Namen"); private DefaultMutableTreeNode m = new DefaultMutableTreeNode("Namen mit M"); private DefaultMutableTreeNode mark = new DefaultMutableTreeNode("Mark"); private DefaultMutableTreeNode marco = new DefaultMutableTreeNode("Marco"); private DefaultMutableTreeNode markus = new DefaultMutableTreeNode("Markus"); private DefaultMutableTreeNode oM = new DefaultMutableTreeNode("Namen ohne M"); private DefaultMutableTreeNode dirk= new DefaultMutableTreeNode("Dirk"); private DefaultMutableTreeNode ben = new DefaultMutableTreeNode("Ben"); // Der Baum mit dem Wurzel-Knoten wird gebaut private JTree tree = new JTree(names); private JSplitPane horizontal = null; private Container content = null; /** * Konstruktor von TreeJFrame. */ public TreeJFrame(String title) { super(title); content = this.getContentPane(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); left.setLayout(new FlowLayout()); // Tree wird zusammengebaut this.addNodes(); // Bei der Instanziierug der SplitPane wird die Ausrichtung übergeben horizontal = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); // tree wird in den linken Bereich der Splitpane gelegt horizontal.setLeftComponent(tree); // leeres Panel wird in den rechten Bereich gelegt horizontal.setRightComponent(right); content.add(horizontal); } /** * Setzt die existierenden Konten zu einem Baum zusammen. * Besitzt ein Knoten keine Kinder mehr, wird default mäßig ein * anderes Icon gewählt. */ private void addNodes() { // Den Knoten können über eine einfache add-Methode Ihre Child-Knoten // hinzugefügt werden: names.add(m); names.add(oM); m.add(mark); m.add(marco); m.add(markus); oM.add(dirk); oM.add(ben); } }