Comment calculer la longueur (en pixels) d'une chaîne en Java?
Préférable sans utiliser Swing.
EDIT: Je voudrais dessiner la chaîne en utilisant drawString () dans Java2D et utiliser la longueur pour le retour à la ligne.
Comment calculer la longueur (en pixels) d'une chaîne en Java?
Préférable sans utiliser Swing.
EDIT: Je voudrais dessiner la chaîne en utilisant drawString () dans Java2D et utiliser la longueur pour le retour à la ligne.
Si vous voulez juste utiliser AWT, puis utilisez Graphics.getFontMetrics
(en indiquant éventuellement la police, pour un non-valeur par défaut) pour avoir un FontMetrics
puis FontMetrics.stringWidth
pour trouver la largeur de la chaîne spécifiée.
Pour d'autres boîtes à outils, vous aurez besoin de nous donner plus d'informations - il est toujours va être toolkit-dépendante.
Cela n’a pas toujours besoin d’être dépendant de la boîte à outils ou d’utiliser l’approche FontMetrics, car il est nécessaire d’obtenir d’abord un objet graphique absent dans un conteneur Web ou dans un environnement sans interface graphique.
J'ai testé cela dans une servlet Web et il calcule la largeur du texte.
String text = "Hello World";
AffineTransform affinetransform = new AffineTransform();
FontRenderContext frc = new FontRenderContext(affinetransform,true,true);
Font font = new Font("Tahoma", Font.PLAIN, 12);
int textwidth = (int)(font.getStringBounds(text, frc).getWidth());
int textheight = (int)(font.getStringBounds(text, frc).getHeight());
=============================================== ===== Ajoutez les valeurs nécessaires à ces dimensions pour créer toute marge requise.
Utilisez la méthode getWidth dans la classe suivante:
import java.awt.*;
import java.awt.geom.*;
import java.awt.font.*;
class StringMetrics {
Font font;
FontRenderContext context;
public StringMetrics(Graphics2D g2) {
font = g2.getFont();
context = g2.getFontRenderContext();
}
Rectangle2D getBounds(String message) {
return font.getStringBounds(message, context);
}
double getWidth(String message) {
Rectangle2D bounds = getBounds(message);
return bounds.getWidth();
}
double getHeight(String message) {
Rectangle2D bounds = getBounds(message);
return bounds.getHeight();
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.