p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    juin 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2012
    Messages : 23
    Points : 0
    Points
    0

    Par défaut Infobulle sur un point

    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.

  2. #2
    Modérateur
    Avatar de Robin56
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2009
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2009
    Messages : 4 222
    Points : 10 055
    Points
    10 055

    Par défaut

    Via un JToolTip par exemple.

  3. #3
    Invité de passage
    Homme Profil pro
    Inscrit en
    juin 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2012
    Messages : 23
    Points : 0
    Points
    0

    Par défaut

    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 voici ma classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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();
      	}
     
     
      }
    et je dérive encore une fois pour avoir ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
      	}
     
     
      }
    Je vois pas comment adapter ces méthodes à mes points

  4. #4
    Modérateur
    Avatar de sinok
    Profil pro
    Inscrit en
    août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2004
    Messages : 8 765
    Points : 12 863
    Points
    12 863

    Par défaut

    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
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

Discussions similaires

  1. Infobulle sur un point
    Par darkman19320 dans le forum Qwt
    Réponses: 0
    Dernier message: 06/05/2011, 12h00
  2. Réponses: 5
    Dernier message: 28/02/2006, 16h07
  3. InfoBulles sur image mappée mais ayant subie un rollover
    Par shadokk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 25/02/2006, 07h46
  4. [VB.Net][Treeview] infobulle sur un noeud
    Par plasticgoat dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/11/2005, 16h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo