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

  FORUM HardWare.fr
  Programmation
  Java

  Extraire les dimensions d'un mot...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Extraire les dimensions d'un mot...

n°913042
babthefox2​002
Posté le 02-12-2004 à 16:51:11  profilanswer
 

Bonjour à tous,
 
je voudrais savoir comment puis-je faire pour obtenir les dimensions (hauteur et largeur) d'un texte dans une fonte particulière ?
 
Je sais que dans une méthode paint il est possible d'utiliser un objet FontMetrics avec un script du genre :

Code :
  1. JPanel p = new JPanel();
  2. Font timesR = new Font("Times Roman",Font.PLAIN,14);
  3. FontMetrics fm = p.getFontMetrics(getFont());
  4. ...


 
Le problème est que la classe dans laquelle je souhaite récupérer les dimensions d'un mot ne contient aucune méthode paint, aucun composant d'interface...
 
Je pense qu'il existe une solution pour pouvoir connaître les dimensions d'un mot à partir d'un objet Font et du String correspondant à son contenu ?
 
Je vous remercie d'avance de vos réponses...
 
                              Baba

mood
Publicité
Posté le 02-12-2004 à 16:51:11  profilanswer
 

n°913090
axk47
Java Man vs Boolet Man
Posté le 02-12-2004 à 17:51:07  profilanswer
 

Essai de passer un JPanel en parametre pour pouvoir recuperer le fontMetrics qui lui est associé
 

n°913105
babthefox2​002
Posté le 02-12-2004 à 18:04:34  profilanswer
 

On ne peut pas faire autrement que d'utiliser un objet graphique ?
 
J'avais penser à cette méthode...

n°913202
the real m​oins moins
Posté le 02-12-2004 à 19:45:41  profilanswer
 

une minute, j'ai ça quelque part... normalement :p


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°913205
the real m​oins moins
Posté le 02-12-2004 à 19:47:07  profilanswer
 

allez hop, un bidule qui va à la ligne si necessaire
(super bourrin hein, mais bon voilà quoi)

Code :
  1. public static Image getMessageImage(String title, Color color) {
  2.         Image img = new BufferedImage(IMAGE_SIZE_X, IMAGE_SIZE_Y, BufferedImage.TYPE_BYTE_INDEXED);
  3.         Graphics2D graphics = (Graphics2D) img.getGraphics();
  4.         graphics.setClip(0, 0, IMAGE_SIZE_X, IMAGE_SIZE_Y);
  5.         // fill the background with white
  6.         graphics.setColor(Color.white);
  7.         graphics.fillRect(0, 0, IMAGE_SIZE_X, IMAGE_SIZE_X);
  8.         // prints title text in <color>
  9.         graphics.setColor(color);
  10.         graphics.setFont(new Font("Helvetica", Font.BOLD, 14));
  11.         int lineHeight = graphics.getFontMetrics().getHeight()+5;
  12.         int maxLineSize = IMAGE_SIZE_X-20;
  13.         StringTokenizer st = new StringTokenizer(title, " \n\r\t\f", true);
  14.         StringBuffer currentLine = new StringBuffer();
  15.         String nextEl = new String();
  16.         int nbrLines = 0;
  17.         while (st.hasMoreElements()) {
  18.             currentLine = new StringBuffer();
  19.             nbrLines++;
  20.             while (graphics.getFontMetrics().stringWidth(currentLine.toString()+nextEl) <= maxLineSize && st.hasMoreElements()) {
  21.                 currentLine.append(nextEl);
  22.                 nextEl = (String) st.nextElement();
  23.             }
  24.             graphics.drawString(currentLine.toString(), 10, (nbrLines*lineHeight));
  25.         }
  26.         graphics.drawString(currentLine.toString()+nextEl, 10, (nbrLines*lineHeight));
  27.         return img;
  28.     }


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°913206
the real m​oins moins
Posté le 02-12-2004 à 19:47:40  profilanswer
 

tu lances ça dans une jvm en headless, et ça tourne sans problème sur un serveur sans carte graphique.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°913837
babthefox2​002
Posté le 03-12-2004 à 14:12:28  profilanswer
 

Merci beaucoup...

n°913847
the real m​oins moins
Posté le 03-12-2004 à 14:20:26  profilanswer
 

Code :
  1. StringBuffer currentLine = new StringBuffer();
  2.          String nextEl = new String();

houlà [:psychokwak]
 
bon on va mettre ça sur le compte que c'est du code que j'ai écrit y'a 3 ans [:itm]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?

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

  Extraire les dimensions d'un mot...

 

Sujets relatifs
extraire les adresses email d'un texte[JAVA] (débutant) Copier un tableau à deux dimensions
PHP recuperer les dimensions d'un tableau en HTMLExtraire une date d'un texte
Récupérer une ligne d'un tableau à 2 dimensions...[RESOLU] - [VB6] Obtenir le nombre de dimensions d'un tableau ?
[java][Algo] Tableau 2 dimensions (dynamique?)[Oracle 8i] extraire du code PLSQL d'un USER
connaitre la taille d'un tableau à 2 dimensions ??tableau a deux dimensions
Plus de sujets relatifs à : Extraire les dimensions d'un mot...


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)