Java tutorial
import java.awt.BorderLayout; import java.awt.Component; import java.util.Dictionary; import java.util.Properties; 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.TreeCellRenderer; class ToolTipTreeCellRenderer implements TreeCellRenderer { DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer(); Dictionary tipTable; public ToolTipTreeCellRenderer(Dictionary tipTable) { this.tipTable = tipTable; } public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { renderer.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); if (value != null) { Object tipKey; if (value instanceof DefaultMutableTreeNode) { tipKey = ((DefaultMutableTreeNode) value).getUserObject(); } else { tipKey = tree.convertValueToText(value, selected, expanded, leaf, row, hasFocus); } renderer.setToolTipText((String) tipTable.get(tipKey)); } return renderer; } } public class TreeTips { public static void main(String args[]) { JFrame frame = new JFrame("Tree Tips"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Properties props = System.getProperties(); JTree tree = new JTree(props); ToolTipManager.sharedInstance().registerComponent(tree); TreeCellRenderer renderer = new ToolTipTreeCellRenderer(props); tree.setCellRenderer(renderer); JScrollPane scrollPane = new JScrollPane(tree); frame.add(scrollPane, BorderLayout.CENTER); frame.setSize(300, 150); frame.setVisible(true); } }