JTreeTable... JTable

lestat

Grünschnabel
Hallo,
ich wollte mal fragen ob jemand von euch mir bei der Erstellung eines Jtreetables helfen könnte?
Hab die Sun- Tuts gelesen, aber es klappt nicht, denn ich brauche ein Jtreetable, welches ich z.b aus einer Xml Datei bekomme und schliesslich darstelle...
Schaffe es einfach nicht ein Jtreetablemodel zu machen...:( !
Bitte bitte helft mir!


Ach ja, mittlerweile versuche ich es mit einem Splitpane( also links Jtree und rechts Jtable) klappt aber auch nicht ganz, weil mein Jtable sich irgendwie nicht dynamisch zeichnet, wenn ich die JTreeNodes aufklappe...

Vielleicht ist das ja auch einfach, aber ich bin neu und kenne mich leider nicht so gut aus!

Danke
Sascha
 
Leider krieg ich das auch nicht hin...:(

Wäre es möglich, wenn du mir ein einfaches Beispiel zeigen könntest?!
JTreeTable mit einem Baum aus DefaultMutableTreeNodes ...

JTreeTable mit nur 2 Spalten, damit ich sehe, wie du das mit JTreeTableModel und CellRenderer meinst.

Wäre super nett
 
Wenn Du Code brauchst dann schau mal bei Deinem SDK (ich hab jdk1.4.2) im Verzeichnis:

demo\jfc\SwingSet2

Und führe die Datei SwingSet2.jar aus letztes Beispiel und Quellcode ist auch gleich dabei :)

Gruss

Luxor
 
Hier mal den orginal SUN-Quellcode davon. Wenn Du aber wissen willst wie es funktioniert schau Dir den Link an den Thomas gepostet hat.


Code:
/*
 * Copyright (c) 2003 Sun Microsystems, Inc. All  Rights Reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * -Redistributions of source code must retain the above copyright
 *  notice, this list of conditions and the following disclaimer.
 *
 * -Redistribution in binary form must reproduct the above copyright
 *  notice, this list of conditions and the following disclaimer in
 *  the documentation and/or other materials provided with the distribution.
 *
 * Neither the name of Sun Microsystems, Inc. or the names of contributors
 * may be used to endorse or promote products derived from this software
 * without specific prior written permission.
 *
 * This software is provided "AS IS," without a warranty of any kind. ALL
 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
 * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
 * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT
 * BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT
 * OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS
 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
 * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
 * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN
 * IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 *
 * You acknowledge that Software is not designed, licensed or intended for
 * use in the design, construction, operation or maintenance of any nuclear
 * facility.
 */

/*
 * @(#)TreeDemo.java	1.7 03/01/23
 */


import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import javax.accessibility.*;

import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.util.*;
import java.io.*;
import java.applet.*;
import java.net.*;

/**
 * JTree Demo
 *
 * @version 1.7 01/23/03
 * @author Jeff Dinkins
 */
public class TreeDemo extends DemoModule {

    /**
     * main method allows us to run as a standalone demo.
     */
    public static void main(String[] args) {
	TreeDemo demo = new TreeDemo(null);
	demo.mainImpl();
    }

    /**
     * TreeDemo Constructor
     */
    public TreeDemo(SwingSet2 swingset) {
	// Set the title for this demo, and an icon used to represent this
	// demo inside the SwingSet2 app.
	super(swingset, "TreeDemo", "toolbar/JTree.gif");

	getDemoPanel().add(createTree(), BorderLayout.CENTER);
    }

    public JScrollPane createTree() {
        DefaultMutableTreeNode top = new DefaultMutableTreeNode(getString("TreeDemo.music"));
        DefaultMutableTreeNode catagory = null ;
	DefaultMutableTreeNode artist = null;
	DefaultMutableTreeNode record = null;

	// open tree data
	URL url = getClass().getResource("/resources/tree.txt");

	try {
	    // convert url to buffered string
	    InputStream is = url.openStream();
	    InputStreamReader isr = new InputStreamReader(is);
	    BufferedReader reader = new BufferedReader(isr);

	    // read one line at a time, put into tree
	    String line = reader.readLine();
	    while(line != null) {
		// System.out.println("reading in: ->" + line + "<-");
		char linetype = line.charAt(0);
		switch(linetype) {
		   case 'C':
		     catagory = new DefaultMutableTreeNode(line.substring(2));
		     top.add(catagory);
		     break;
		   case 'A':
		     if(catagory != null) {
		         catagory.add(artist = new DefaultMutableTreeNode(line.substring(2)));
		     }
		     break;
		   case 'R':
		     if(artist != null) {
		         artist.add(record = new DefaultMutableTreeNode(line.substring(2)));
		     }
		     break;
		   case 'S':
		     if(record != null) {
		         record.add(new DefaultMutableTreeNode(line.substring(2)));
		     }
		     break;
		   default:
		     break;
		}
		line = reader.readLine();
	    }
	} catch (IOException e) {
	}

	JTree tree = new JTree(top) {
	    public Insets getInsets() {
		return new Insets(5,5,5,5);
	    }
	};
	return new JScrollPane(tree);
    }

}
 
Das Thema beschäftigt mich auch gerade.
Für mich ist das HowTo von sun zu JTreeTable auch viel zu komplex.
Es muß doch irgendwo ein einfaches Beispiel geben. Wo man erstmal das Basisprinzip von JTree als Renderer und Editor verstehen kann. Die Rekursive Einbindung eines Filesystems, oder XML-Files bekommt man dann sicher hin.
Hat keiner so ein Grundgerüst. Man muß ja nicht immer alles neu erfinden!
 
Zurück