Bonjour,
J'aimerais savoir s'il est possible de créer une infobulle contenant des informations spécifiques à un point lors du passage de la souris sur celui-ci ?
Merci d'avance.
Version imprimable
Bonjour,
J'aimerais savoir s'il est possible de créer une infobulle contenant des informations spécifiques à un point lors du passage de la souris sur celui-ci ?
Merci d'avance.
Via un JToolTip par exemple.
Merci, en balayant ce document de vue, je suis tombé sur des méthodes qui s'appliquent à des objets hérités de JComponent comme setToolTextTip(String). Cependant, mes points ( que je place sur une carte) sont des objets très particuliers, dérivés de l'interface IDrawable dont l'implémentation est ci contre
et voici ma classeCode:
1
2
3
4
5
6
7
8
9
10
11
12 import java.awt.Graphics; import java.awt.Rectangle; import java.awt.geom.Ellipse2D; public interface IDrawable { public void draw(Graphics g); public Rectangle getRectangle(); }
et je dérive encore une fois pour avoir ceciCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Point; import java.awt.Rectangle; import java.awt.geom.Ellipse2D; import javax.swing.JComponent; public abstract class FormDrawable implements IDrawable { protected Rectangle rect; protected Color color; public FormDrawable(Color color, Point pos, Dimension dim){ this.color=color; this.rect = new Rectangle(pos,dim); } public abstract void draw(Graphics g); public Rectangle getRectangle(){ return (Rectangle) rect.clone(); } }
Je vois pas comment adapter ces méthodes à mes points :(Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Point; public class RectangleDrawable extends FormDrawable{ public RectangleDrawable(Color color, Point pos, Dimension dim) { super(color, pos, dim); } public void draw(Graphics g) { Color c = g.getColor(); g.setColor(color); g.fillRect(rect.x,rect.y,rect.height,rect.width); g.setColor(c); } }
Ajoute une méthode contains à ton interface IDrawable.
Méthode prenant en paramètre un point et renvoyant true/false si le point est à l'intérieur/à l'extérieur de ton IDrawable (de faite, il suffit de déléguer à la méthode contains de ton Rectangle).
Puis d'ajouter également à ton interface une méthode getToolTipContent renvoyant une chaîne à afficher en tooltip.
Puis, en utilisant un vieux combo MouseListener/MouseMotionListener sur ton composant principal, tu boucle sur tes formes en demandant si le point courant de la souris est contenu dans un de tes IDrawable (méthode contains).
Si c'est le cas, tu récupère le contenu affichable dans ton IDrawable.
Puis où tu utilises les tooltip de java: http://www.exampledepot.com/egs/java...oolTipLoc.html