Enabling tooltips on a JTree

August 12, 2008 by Michael

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

  1. Sagar wrote:

    It was very useful. Thanks a lot.

    Posted on November 5, 2009 at 11:30 AM | Permalink
  2. igorludi wrote:

    One “ToolTipManager” too many in:
    javax.swing.ToolTipManager.ToolTipManager.sharedInstance().registerComponent(aTree);

    should be:

    javax.swing.ToolTipManager.sharedInstance().registerComponent(aTree);

    Thanks.

    Posted on May 29, 2012 at 10:34 AM | Permalink
  3. Michael wrote:

    Thanks!

    Posted on May 29, 2012 at 11:15 AM | Permalink
Post a Comment

Your email is never published. We need your name and email address only for verifying a legitimate comment. For more information, a copy of your saved data or a request to delete any data under this address, please send a short notice to michael@simons.ac from the address you used to comment on this entry.
By entering and submitting a comment, wether with or without name or email address, you'll agree that all data you have entered including your IP address will be checked and stored for a limited time by Automattic Inc., 60 29th Street #343, San Francisco, CA 94110-4929, USA. only for the purpose of avoiding spam. You can deny further storage of your data by sending an email to support@wordpress.com, with subject “Deletion of Data stored by Akismet”.
Required fields are marked *