Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1616 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Applet info-bulles

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Applet info-bulles

n°419515
the big be​n
Posté le 06-06-2003 à 15:08:07  profilanswer
 

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

mood
Publicité
Posté le 06-06-2003 à 15:08:07  profilanswer
 

n°419536
darklord
You're welcome
Posté le 06-06-2003 à 15:17:32  profilanswer
 

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
n°419558
the big be​n
Posté le 06-06-2003 à 15:24:42  profilanswer
 

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

n°419576
gfive
Posté le 06-06-2003 à 15:34:09  profilanswer
 

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..

n°419583
the big be​n
Posté le 06-06-2003 à 15:37:30  profilanswer
 

merci ca m aiderais ...

n°419590
gfive
Posté le 06-06-2003 à 15:41:28  profilanswer
 

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...

n°419776
the big be​n
Posté le 06-06-2003 à 16:30:38  profilanswer
 

un grand merci je vais regarder a ca!
 
Ben

n°419887
deltaden
Posté le 06-06-2003 à 16:54:08  profilanswer
 

gfive a écrit :

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


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

n°419890
darklord
You're welcome
Posté le 06-06-2003 à 16:54:38  profilanswer
 

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
n°419901
the big be​n
Posté le 06-06-2003 à 16:57:15  profilanswer
 

heuuu....

mood
Publicité
Posté le 06-06-2003 à 16:57:15  profilanswer
 

n°419914
deltaden
Posté le 06-06-2003 à 17:03:40  profilanswer
 

DarkLord a écrit :


je crois que tu vas ressortir encore toi :D


 :whistle:

n°420001
gfive
Posté le 06-06-2003 à 17:37:16  profilanswer
 

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.

n°420023
the big be​n
Posté le 06-06-2003 à 17:54:50  profilanswer
 

snif

n°420222
deltaden
Posté le 06-06-2003 à 20:38:57  profilanswer
 

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.

n°420228
gfive
Posté le 06-06-2003 à 20:45:30  profilanswer
 

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

n°420237
deltaden
Posté le 06-06-2003 à 20:49:49  profilanswer
 

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.
 

n°420243
deltaden
Posté le 06-06-2003 à 20:52:29  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Applet info-bulles

 

Sujets relatifs
APPLET + acces LECTURE ECRITURE d un fichier communApplication transformé en Applet ne marche pas
probleme pour signer une applettransformer une applet en application
[JAVA]Bouger la souris dans une appletPROJET INFO BTS.. ca arrive...
Fichiers et applet[VB] VFW Codec info ca merde ...
[C++] Lancer une applet java.Recuperer la liste de tous les parametres d'une applet
Plus de sujets relatifs à : Applet info-bulles


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR