Thinks i keep forgetting. Today: Enabling a JTree in J2SE to show different tooltips on his nodes:
1. Create a custom tree renderer like so:
import java.awt.Component; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; public class TooltipTreeRenderer extends DefaultTreeCellRenderer { @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { final Component rc = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); String tooltip = "Compute some arbitrary text depending on the node (which is hidden behind 'value')"; this.setToolTipText(tooltip); return rc; } } |
2. Set this renderer
aTree.setCellRenderer(new TooltipTreeRenderer()); |
3. Keep wondering, why the tooltip doesn’t show…
4. Register the tree with the ToolTipManager (which isn’t necessary for nearly all other Swing Components…)
javax.swing.ToolTipManager.sharedInstance().registerComponent(aTree); |
5. Enjoy 🙂
3 comments
It was very useful. Thanks a lot.
One “ToolTipManager” too many in:
javax.swing.ToolTipManager.ToolTipManager.sharedInstance().registerComponent(aTree);
should be:
javax.swing.ToolTipManager.sharedInstance().registerComponent(aTree);
Thanks.
Thanks!
Post a Comment