import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.ToolTipManager;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
public class Main {
public static void main (String args[]) {
JTree tree = new JTree( createModel() );
tree.setCellRenderer( new Renderer() );
// Das der noch rein muss, hab ich auch erst jetzt herausgefunden.
ToolTipManager.sharedInstance().registerComponent( tree );
JFrame frame = new JFrame();
frame.getContentPane().add( new JScrollPane( tree ));
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setSize( 500, 500 );
frame.setLocationRelativeTo( null );
frame.setVisible( true );
}
private static TreeModel createModel(){
DefaultMutableTreeNode root = new DefaultMutableTreeNode( new Blupp( "Root", "Wurzelzwerg" ) );
root.add( new DefaultMutableTreeNode( new Blupp( "Node A", "Anhängsel" ) ) );
DefaultMutableTreeNode node = new DefaultMutableTreeNode( new Blupp( "Node B", "Quäksli" ) );
root.add( node );
node.add( new DefaultMutableTreeNode( new Blupp( "Leaf A", "Störefried" ) ) );
node.add( new DefaultMutableTreeNode( new Blupp( "Leaf B", "Nervensäge" ) ) );
root.add( new DefaultMutableTreeNode( new Blupp( "Node C", "Quälgeist" ) ) );
root.add( new DefaultMutableTreeNode( new Blupp( "Node D", "Parasit" ) ) );
return new DefaultTreeModel( root );
}
}
class Renderer extends DefaultTreeCellRenderer{
public Component getTreeCellRendererComponent( JTree tree, Object value,
boolean sel, boolean expanded, boolean leaf, int row,
boolean hasFocus ) {
super.getTreeCellRendererComponent( tree, value, sel, expanded,
leaf, row, hasFocus );
if( value instanceof DefaultMutableTreeNode ){
DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;
Object user = node.getUserObject();
if( user instanceof Blupp ){
setToolTipText( ((Blupp)user).getTooltip() );
}
else
setToolTipText( value.toString() );
}
else
setToolTipText( value.toString() );
return this;
}
}
class Blupp{
private String text, tooltip;
public Blupp( String text, String tooltip ){
this.text = text;
this.tooltip = tooltip;
}
public String toString() {
return getText();
}
public String getText() {
return text;
}
public String getTooltip() {
return tooltip;
}
}