Applet info-bulles

Applet info-bulles - Java - Programmation

Marsh Posté le 06-06-2003 à 15:08:07    

Y a t il qq chose de deja prévu pour faire facilement des info bulle dans un applet java?
 

Reply

Marsh Posté le 06-06-2003 à 15:08:07   

Reply

Marsh Posté le 06-06-2003 à 15:17:32    

The big ben a écrit :

Y a t il qq chose de deja prévu pour faire facilement des info bulle dans un applet java?
 
 


 
bin les tool tip ca existe, suffit de lire la javadoc ou le premier tutorial sur SWING chez sun


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 06-06-2003 à 15:24:42    

Oui ok mais je viens de regarder mais moi ce ne sont pas des  boutons, ... mais juste de cadres tracer sur mon écran que j aimerais bien "mapper" et y mettre une info-bulle

Reply

Marsh Posté le 06-06-2003 à 15:34:09    

Dark : Swing/Applet, euuuh, nan, ça marchera pas! :)  
 
Par contre, j'ai eu fait ça, moi!! En AWT, à la bourrin!! :p
 
Attends, je regarde si je le retrouve..

Reply

Marsh Posté le 06-06-2003 à 15:37:30    

merci ca m aiderais ...

Reply

Marsh Posté le 06-06-2003 à 15:41:28    

A trouvé:!!!! :D
 
 

Code :
  1. public void mousePressed(GTable parent, MouseEvent e) {
  2.         Component source = (Component) e.getSource();
  3.         Graphics g = source.getGraphics();
  4.         int maxwidth = source.getSize().width - 10;
  5.         Point p = e.getPoint();
  6.        
  7.         int cellwidth = parent.getColWidth(parent.getColumn(p));
  8.         if (g.getFontMetrics().stringWidth(value) > cellwidth) {
  9.             //if (!isshowing) {
  10.                 int x, y, height, width;
  11.                 Vector lines = splitText(g.getFontMetrics(), tooltiptext, maxwidth);
  12.                 width = 0;
  13.                 for (int i = 0; i < lines.size(); i++) {
  14.                     width = Math.max(width, g.getFontMetrics().stringWidth((String) lines.elementAt(i)) + 8);
  15.                 }
  16.                
  17.                 height = (g.getFontMetrics().getHeight() * lines.size()) + 6;
  18.                 x = Math.min(p.x - (width / 2), maxwidth - width) + 5;
  19.                 x = Math.max(5, x);
  20.                 y = Math.min(p.y, source.getSize().height - height) - 2;
  21.                 showToolTip(g, x, y, width, height, lines);
  22.                 isshowing = true;
  23.         } else {
  24.             enabled = false;
  25.             source.repaint();
  26.         }
  27.     }
  28.     public void mouseReleased(GTable parent, MouseEvent e) {
  29.         ((Component) e.getSource()).repaint();
  30.     }
  31.     private Vector splitText(FontMetrics fm, String text, int width) {
  32.         String origin = text;
  33.         Vector lines = new Vector();
  34.         StringBuffer begin = new StringBuffer();
  35.        
  36.         if (fm.stringWidth(text) < width) {
  37.             lines.addElement(text);
  38.         } else {
  39.             int index = 0;
  40.             while (index < text.length()) {
  41.                 while ((index < text.length()) &&
  42.                        (fm.stringWidth(begin.toString()+text.charAt(index)) < width)) {
  43.                     begin.append(text.charAt(index));
  44.                     index++;
  45.                 }
  46.                 if (index == text.length()) {
  47.                     lines.addElement(begin.toString());
  48.                 } else {
  49.                     int lastspace = begin.toString().lastIndexOf(" " );
  50.                     if (lastspace == -1) {
  51.                     lines.addElement(begin.toString());
  52.                     } else {
  53.                         lines.addElement(begin.toString().substring(0, lastspace + 1));
  54.                         index = index - (begin.length() - (lastspace + 1));
  55.                     }
  56.                     begin.setLength(0);
  57.                 }
  58.             }
  59.         }
  60.         return lines;
  61.     }
  62.     private void showToolTip(Graphics g, int x, int y, int width, int height, Vector lines) {
  63.         g.setClip(x, y, width + 1, height + 1);
  64.         g.setColor(tooltipback);
  65.         g.fillRoundRect(x+1, y + 1, width, height, 3, 3);
  66.         g.setColor(tooltipfore);
  67.         g.drawRoundRect(x, y, width, height, 3, 3);
  68.         int lineheight = g.getFontMetrics().getHeight() + 2;
  69.         for (int i = 0; i < lines.size(); i++) {
  70.             g.drawString((String) lines.elementAt(i), x + 4, y + 3 + g.getFontMetrics().getAscent() + (i * lineheight));
  71.         }
  72.     }
  73.     public String toString() {
  74.         return value;
  75.     }
  76.    
  77.    
  78.     public boolean enabled() {
  79.         return enabled;
  80.     }
  81.     public void setValue(String text) {
  82.         this.value = text;
  83.     }
  84.     public void setToolTip(String text) {
  85.         this.tooltiptext = text;
  86.     }

 
 
Bon, en gros, c'est un bout de code d'une class qui sert à dessiner une cellule de tableau.  
 
Quand le tableau (class GTable) détecte un évènement  de souris, elle le passe à la cellule concernée, en appellant :  
 
mousePressed(GTable parent, MouseEvent e)
 
(en fait, dans GTable, j'ai une méthode getCell(Point p) du coup, dans mousePressed(MouseEvent e) , je fais :  
 
Cell cell = getCell(e.getPoint());
if (cell != null) {
    cell.mousePressed(this, e);
}
 
 
et pareil pour MouseReleased, MouseMoved, etc....
 
ce qui me permet de faire capter les évènements souris à des objets qui ne sont pas des composants AWT)
 
Ensuite, le dessin du tooltip, et tout ça, c'est relativement basique, en fait.
 
Y'a que la partie splitText() qui te laissera peut petre un peu perplexe : en fait, le tooltip que tu dessine ne pourra pas dépasser le cadre du composant parent, normalement...donc, il faut découper le texte du tooltip, s'il est trop long et qu'il dépasse de la taille max. possible.
 
ouala ouala...

Reply

Marsh Posté le 06-06-2003 à 16:30:38    

un grand merci je vais regarder a ca!
 
Ben

Reply

Marsh Posté le 06-06-2003 à 16:54:08    

gfive a écrit :

Dark : Swing/Applet, euuuh, nan, ça marchera pas! :)  


et les JApplet, c'est pour les chiens ?  :ange:

Reply

Marsh Posté le 06-06-2003 à 16:54:38    

deltaden a écrit :


et les JApplet, c'est pour les chiens ?  :ange:  


 
je crois que tu vas ressortir encore toi :D


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 06-06-2003 à 16:57:15    

heuuu....

Reply

Marsh Posté le 06-06-2003 à 16:57:15   

Reply

Marsh Posté le 06-06-2003 à 17:03:40    

DarkLord a écrit :


je crois que tu vas ressortir encore toi :D


 :whistle:

Reply

Marsh Posté le 06-06-2003 à 17:37:16    

deltaden a écrit :


et les JApplet, c'est pour les chiens ?  :ange:  


 
bon, allez, explication....
Pour utiliser Swing, il faut une JRE >= 1.2
Or, dans les navigateurs, la JRE est une 1.1.5, à moins d'installer le plug-in Java (environ 11Mo, voire plus)  
 
Donc, pour des trucs que les gens autres que des nerds avec ADSL vont utiliser, ben Swing dans une applet, tu peux l'oublier.
 
ouala.

Reply

Marsh Posté le 06-06-2003 à 17:54:50    

snif

Reply

Marsh Posté le 06-06-2003 à 20:38:57    

gfive a écrit :

bon, allez, explication....
Pour utiliser Swing, il faut une JRE >= 1.2
Or, dans les navigateurs, la JRE est une 1.1.5, à moins d'installer le plug-in Java (environ 11Mo, voire plus)


Bah, c'est vrai pour les utilisateurs sous Windows du browser le plus pourris du monde, j'ai nommé IE :D  
(bon d'accord, ca fait bcp de monde :( )
 
De toute façon, cette situation va changer, vu que MS a perdu son procès, ils sont obligé d'inclure la JVM de Sun à partir de début 2004.
Et sinon, leur JVM à eux n'est déjà plus disponible sur leur site, et n'est plus incluse dans les dernières versions de IE. Donc il faut qd même en télécharger une.

Reply

Marsh Posté le 06-06-2003 à 20:45:30    

Si, elle est incluse, garantie!! :D:D Je développe une nouvelle applet, en ce moment, et sous XP, installation de base, ça marche.....

Reply

Marsh Posté le 06-06-2003 à 20:49:49    

gfive a écrit :

Si, elle est incluse, garantie!! :D:D Je développe une nouvelle applet, en ce moment, et sous XP, installation de base, ça marche.....


Oui, elle est incluse dans XP, mais tu sais pas l'avoir par le download de dernière version de IE.
 

Reply

Marsh Posté le 06-06-2003 à 20:52:29    

voilà:  

Citation :

We have started removing the Microsoft VM from new products going into distribution. Specifically, this means that we will not include the Microsoft VM in any Windows releases from this point forward, including service packs. We will also not distribute new versions of the Microsoft VM via download from our Web site. We will, however, continue to provide security fixes to the Microsoft VM to existing customers until January 2, 2004.


http://www.microsoft.com/windowsxp [...] ws/jre.asp
 
Il me semble même que c'est celle de Sun qui est incluse dans Server 2003, mais il faudrait vérifier

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed