Knoten aus JTree als Spaltennamen für JTable

JaX1983

Grünschnabel
hi leute,
hab einen jtree geschrieben, der sich vom benutzer beliebig editieren lässt. bräuchte jetz meine knoten und blätter als spalten in x und y-richtung in einem jtable.
hab aber keine ahnung, wie ich das bewerkstellige. das jtable müsste sich sozusagen nach und nach mit den spalten füllen, je nachdem was und wieviel knoten der benutzer im jtree anlegt.
könnt ihr mir sagen, wie ich das hinbekomm?
danke im voraus....
Code:
import java.awt.*;
import java.awt.event.*;
import java.util.Enumeration;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import javax.swing.text.*; 
import javax.swing.table.*;



/*
 * MyApplet.java
 *
 * Created on 25. April 2007, 18:27
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

/**
 *
 * @author Georg Kappelmeier
 */
public class MyApplet extends javax.swing.JApplet implements ActionListener{
  
    
    
    protected DefaultMutableTreeNode root;
    protected DefaultTreeModel treeModel;
    protected JTree tree;
    protected JTextField eingabe;
    protected JLabel title;
    protected Enumeration e;
    
    
    /**
     * Creates a new instance of MyApplet
     */
    public MyApplet(){
     
     root = new DefaultMutableTreeNode("Goal");
     treeModel = new DefaultTreeModel(root);
     tree = new JTree(treeModel);
     TreeSelectionModel tsm = new DefaultTreeSelectionModel();
     tsm.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
     tree.setSelectionModel(tsm);
     tree.addSelectionRow(0);
     tree.setRootVisible(true);
    
     //JTree einfügen
     Container cp = getContentPane();
     cp.add(new JScrollPane(tree), BorderLayout.CENTER);
     //ButtonPanel
     JPanel panel_buttons = new JPanel(new FlowLayout());
     String[] buttons = new String[]{"Add", "Del", "Change", "Nodes2Console"};
     for (int i = 0; i < buttons.length; ++i) {
       JButton button = new JButton(buttons[i]);
       button.addActionListener(this);
       panel_buttons.add(button);
     }
     eingabe = new JTextField(20);
     JPanel oben = new JPanel();
     oben.add(panel_buttons);
     JPanel unten = new JPanel();
     unten.add(eingabe);
     cp.add(unten, BorderLayout.SOUTH);
     cp.add(oben, BorderLayout.NORTH);
  
     


    }
    
   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("Add") && !eingabe.getText().equals("")) {  
         DefaultMutableTreeNode child;
         child = new DefaultMutableTreeNode(eingabe.getText());
         treeModel.insertNodeInto(child, node, node.getChildCount()); 
         TreeNode[] path = treeModel.getPathToRoot(node);
         tree.expandPath(new TreePath(path));
         eingabe.setText("");
         }
       if (cmd.equals("Del")) {
         if (node != root) {
           TreeNode parent = node.getParent();
           TreeNode[] path = treeModel.getPathToRoot(parent);
           treeModel.removeNodeFromParent(node); 
           tree.setSelectionPath(new TreePath(path));
         }
       }
       if (cmd.equals("Change") && !eingabe.getText().equals("")) { 
          String name = node.toString();
          node.setUserObject(eingabe.getText());
          treeModel.nodeChanged(node);
          eingabe.setText("");
       }
       if (cmd.equals("Nodes2Console")){
 
          DefaultMutableTreeNode aktnode = null; 
          int count_criteria = root.getChildCount();
          int default_depth = 1;
          System.out.println("Anzahl Hauptkriterien: "+count_criteria);
               
                   for (Enumeration e = root.preorderEnumeration() ; e.hasMoreElements() ;) {
                       
                        aktnode = (DefaultMutableTreeNode) e.nextElement();
                        System.out.println("Kriterium: "+aktnode);
                        TreeNode[] akt_path = aktnode.getPath();
                        int akt_length = akt_path.length;
                        for(int i=0;i<akt_length;i++){
                            System.out.println(akt_path[i]);
                        }
                        System.out.println("-----------------");
                   }
        
       }
       
     }
     
   }
   
   
}

als beispiel:

mein programm soll am ende die selbe funktionalität aufweisen, wie folgende anwendung
http://viror2.wiwi.uni-karlsruhe.de/kaiman/kaiman/ahp/ahp4java.xml
 

Neue Beiträge

Zurück