Trees.java


</COMMENT> Nie można wyświetlić apletu!!

//: c13:Trees.java
// Przykład z książki 'Thinking in Java, wydanie 2.', autor - Bruce Eckel
// www.BruceEckel.com 
// Patrz informacje o prawach autorskich podane w pliku CopyRight.txt.
// Prosty przykład drzewa Swing. Drzewa są
// przeważnie o wiele bardziej złożone.
// <applet code=Trees
//  width=250 height=250></applet>
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.tree.*;
import com.bruceeckel.swing.*;

// Przyjmuje tablicę łańcuchów tekstowych i z pierwszego 
// elementu robi wierzchołek a z pozostałych liście:
class Branch {
  DefaultMutableTreeNode r;
  public Branch(String[] data) {
    r = new DefaultMutableTreeNode(data[0]);
    for(int i = 1; i < data.length; i++)
      r.add(new DefaultMutableTreeNode(data[i]));
  }
  public DefaultMutableTreeNode node() { 
    return r; 
  }
}  

public class Trees extends JApplet {
  String[][] data = {
    { "Kolor", "Czerwony", "Niebieski", "Zielony" },
    { "Smak", "Cierpki", "Słodki", "Mdły" },
    { "Długość", "Krótki", "Średni", "Długi" },
    { "Głośność", "Wysoka", "Średnia", "Niska" },
    { "Tempereatura", "Wysoka", "Średnia", "Niska" },
    { "Intensywność", "Wysoka", "Średnia", "Niska" },
  };
  static int i = 0;
  DefaultMutableTreeNode root, child, chosen;
  JTree tree;
  DefaultTreeModel model;
  public void init() {
    Container cp = getContentPane();
    root = new DefaultMutableTreeNode("korzeń");
    tree = new JTree(root);
    // Dodaj suwak aby zajął się przesuwaniem:
    cp.add(new JScrollPane(tree), 
      BorderLayout.CENTER);
    // Przechwyć model drzewa:
    model =(DefaultTreeModel)tree.getModel();
    JButton test = new JButton("Naciśnij mnie");
    test.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e){
        if(i < data.length) {
          child = new Branch(data[i++]).node();
          // Co zostało ostatnio wybrane?
          chosen = (DefaultMutableTreeNode)
            tree.getLastSelectedPathComponent();
          if(chosen == null) chosen = root;
          // Model stworzy odpowiednie zdarzenie.
          // W odpowiedzi drzewo ma się uaktualnić:
          model.insertNodeInto(child, chosen, 0);
          // Tutaj wstawiany jest nowy wierzchołek 
          // do wierzchołka aktualnie wybranego.
        }
      }
    });
    // Zmiana koloru przycisku:
    test.setBackground(Color.blue);
    test.setForeground(Color.white);
    JPanel p = new JPanel();
    p.add(test);
    cp.add(p, BorderLayout.SOUTH);
  }
  public static void main(String[] args) {
    Console.run(new Trees(), 250, 250);
  }
} ///:~