utilisation ci-dessous la méthode, (mise à jour max et min taille de selon vos besoins)
public static int getMatchingFontSize(JComponent comp, String string) {
int minSize = 10;
int maxSize = 60;
Dimension size = comp.getSize();
if (comp == null || comp.getFont() == null || string.isEmpty()) {
return -1;
}
//Init variables
int width = size.width;
int height = size.height;
Font font = comp.getFont();
int curSize = font.getSize();
FontMetrics fm = comp.getFontMetrics(new Font(font.getName(), font.getStyle(), maxSize));
while (fm.stringWidth(string) + 4 > width || fm.getHeight() > height) {
maxSize--;
fm = comp.getFontMetrics(new Font(font.getName(), font.getStyle(), maxSize));
curSize = maxSize;
}
while (fm.stringWidth(string) + 4 < width || fm.getHeight() < height) {
minSize++;
fm = comp.getFontMetrics(new Font(font.getName(), font.getStyle(), minSize));
curSize = minSize;
}
if (curSize < minSize) {
curSize = minSize;
}
if (curSize > maxSize) {
curSize = maxSize;
}
return curSize;
}
look pour la classe 'java.awt.FontMetrics', il fera le travail. – aKilleR
* "mais le problème est lorsque le texte est trop long il ne rentre pas et la barre de défilement apparaît" * C'est une fonctionnalité, pas un problème. –