Here you can find the source of adjustFontSizeToGetPreferredWidthOfLabel(JLabel jLabel, int initialWidth)
static int adjustFontSizeToGetPreferredWidthOfLabel(JLabel jLabel, int initialWidth)
//package com.java2s; public class Main { static int adjustFontSizeToGetPreferredWidthOfLabel(JLabel jLabel, int initialWidth) { int width = initialWidth; // if (metrics.stringWidth(jLabel.getText()) > width) { // jLabel.setFont(new java.awt.Font(jLabel.getFont().getFontName(), 0, jLabel.getFont().getSize()-1)); // metrics = jLabel.getFontMetrics(jLabel.getFont()); // if (metrics.stringWidth(jLabel.getText()) > width) { // jLabel.setFont(new java.awt.Font(jLabel.getFont().getFontName(), 0, jLabel.getFont().getSize()-1)); // metrics = jLabel.getFontMetrics(jLabel.getFont()); // if (metrics.stringWidth(jLabel.getText()) > width) { // jLabel.setFont(new java.awt.Font(jLabel.getFont().getFontName(), 0, jLabel.getFont().getSize()-1)); // metrics = jLabel.getFontMetrics(jLabel.getFont()); // if (metrics.stringWidth(jLabel.getText()) > width) { // jLabel.setFont(new java.awt.Font(jLabel.getFont().getFontName(), 0, jLabel.getFont().getSize()-1)); // metrics = jLabel.getFontMetrics(jLabel.getFont()); // if (metrics.stringWidth(jLabel.getText()) > width) { // jLabel.setFont(new java.awt.Font(jLabel.getFont().getFontName(), 0, jLabel.getFont().getSize()-1)); // metrics = jLabel.getFontMetrics(jLabel.getFont()); // } // } // } // } // }/*from w ww. j av a 2 s . co m*/ int initialFontSize = jLabel.getFont().getSize(); FontMetrics metrics = jLabel.getFontMetrics(jLabel.getFont()); if (metrics.stringWidth(jLabel.getText()) > width) { for (int i = initialFontSize; i > 10; i--) { jLabel.setFont(new java.awt.Font(jLabel.getFont() .getFontName(), 0, jLabel.getFont().getSize() - 1)); metrics = jLabel.getFontMetrics(jLabel.getFont()); if (metrics.stringWidth(jLabel.getText()) <= width) { break; } } } return metrics.stringWidth(jLabel.getText()); } }