Doter un JTree d'un tooltip

Aller en bas

Doter un JTree d'un tooltip Empty Doter un JTree d'un tooltip

Message  Gus le Jeu 3 Sep - 5:06

Voici une entité qui permet de doter n'importe quel objet JTree d'une fonctionnalité de tooltip qui fait afficher dans une bulle le contenu de chaque noeud de l'arbre lorsque vous passez la souris dessus.

gus.graphic.tree.tooltip

Cette entité comporte deux classes dont le code source est donné ci-dessous :

Code:
package gus05.entity.gus.graphic.tree.tooltip;

import javax.swing.JTree;
import gus05.framework.core.Entity;
import gus05.framework.features.Give;

public class TreeTooltip implements Entity, Give {

    public String getName()         {return "gus.graphic.tree.tooltip";}
    public String getCreationDate()      {return "2006.12.09";}

    public void give(Object obj) throws Exception
    {
        JTree tree = (JTree)obj;
        new TooltipHandler(tree);
    }
}

Code:
package gus05.entity.gus.graphic.tree.tooltip;

import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.ToolTipManager;
import javax.swing.tree.TreeCellRenderer;
import javax.swing.tree.TreePath;


class TooltipHandler extends MouseMotionAdapter {

    private JTree tree;

    public TooltipHandler(JTree tree)
    {
        super();
        this.tree = tree;
        tree.addMouseMotionListener(this);
        ToolTipManager.sharedInstance().registerComponent(tree);
    }
   
    public void mouseMoved(MouseEvent evt)
    {
        Point p = evt.getPoint();
       
        TreePath path = tree.getPathForLocation(p.x,p.y);
        int row = tree.getRowForLocation(p.x,p.y);
        if(path==null)return;
       
        Object target = path.getLastPathComponent();
        TreeCellRenderer renderer = tree.getCellRenderer();
       
        JLabel label = (JLabel) renderer.getTreeCellRendererComponent(tree,target,false,false,false,row,false);
       
        if(target!=null)
            label.setToolTipText(target.toString());
        else label.setToolTipText(null);
    }
}
Gus
Gus
Admin

Messages : 249
Date d'inscription : 01/09/2009

Voir le profil de l'utilisateur http://www.gus05.com

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum