//Titel:        JTree
//Copyright:     Copyright (c) 2003, 06, 2010
//Autor:         Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm
//Organisation:  HS Harz
//Beschreibung:  Einführung in JTree
//Version:       2.0
//letzte Aenderung: 07.11.2010


// Beispiel mit JTree und DefaultMutableTreeNode
// Knoten werden eingefügt

import java.awt.*;
import javax.swing.*;

import java.awt.event.*;

import javax.swing.tree.DefaultMutableTreeNode;

import java.io.*;

public class Tree02 extends JFrame {

  JTree jTree1;

  public Tree02() {
    setSize(400, 300);
    setTitle("JTree 2. Beispiel");
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    setGUI();
  }

  private void setGUI() {
    DefaultMutableTreeNode root;


    this.getContentPane().setLayout( new BorderLayout() );

      // BuildTree generiert den Baum, gibt die Wurzel zurück
    root = BuildTree();
      // boolean asksAllowsChildren, wenn false gibt es eine Unterscheidung
      // Blatt Knoten
    jTree1 = new javax.swing.JTree(root, true);
    jTree1.setFont( new Font("Arial", Font.BOLD,22)  );
    this.getContentPane().add(jTree1, BorderLayout.CENTER);
  } // setGUI


  // BuildTree
  DefaultMutableTreeNode BuildTree() {
    DefaultMutableTreeNode root;
      // pro Stufe ein Knoten
    DefaultMutableTreeNode[]  Knoten = new DefaultMutableTreeNode[3];
    DefaultMutableTreeNode KnotenExtra;
    DefaultMutableTreeNode KnotenExtra2;

    for (int i=0; i<3; i++) {
      Knoten[i] = new DefaultMutableTreeNode();
    }
    root = new DefaultMutableTreeNode("root");

    Knoten[0] = new DefaultMutableTreeNode("1. Stufe (A)");
    root.add( Knoten[0] );

    Knoten[1] = new DefaultMutableTreeNode("AAA");
    Knoten[0].add( Knoten[1] );

    Knoten[1] = new DefaultMutableTreeNode("BBB");
    Knoten[0].add( Knoten[1] );

    KnotenExtra = new DefaultMutableTreeNode("PSC");
    Knoten[1].add(KnotenExtra);


    // ---------
    KnotenExtra2 = new DefaultMutableTreeNode("IB");
    root.add(KnotenExtra2);

    Knoten[0] = new DefaultMutableTreeNode("1. Stufe (B)");
    root.add( Knoten[0] );


    Knoten[1] = new DefaultMutableTreeNode("CCC");
    Knoten[0].add( Knoten[1] );

    Knoten[1] = new DefaultMutableTreeNode("DDD");
    Knoten[0].add( Knoten[1] );

    return root;
  }  // BuildTree


  public static void main(String[] args) {
    Tree02 frame = new Tree02();
    frame.setVisible(true);
 }


}


