FontMetrics クラスを使用して、レンダリングされた文字列の幅と高さを取得できます (丸めエラーを回避するために、Graphics2D インスタンスで分数フォント メトリックを有効にしてください)。
Graphics2D g = ...;
g.setRenderingHint(
RenderingHints.KEY_FRACTIONALMETRICS,
RenderingHints.VALUE_FRACTIONALMETRICS_ON);
Font font = Font.decode("Times New Roman");
String text = "Foo";
Rectangle2D r2d = g.getFontMetrics(font).getStringBounds(text, g);
ここで、デフォルト (または実際には任意) のサイズのフォントを使用してテキストの幅がある場合、テキストが指定された幅 (100px など) 内に収まるようにフォントをスケーリングできます。
font = font.deriveFont((float)(font.getSize2D() * 100/r2d.getWidth()));
同様に、使用可能なパネルの高さを超えないように、フォント サイズを制限する必要がある場合があります。
レンダリングされたテキストの外観を改善するには、テキスト レンダリングのアンチエイリアシングおよび/またはフォントのカーニング サポートを有効にすることも検討する必要があります。
g.setRenderingHint(
RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
Map<TextAttribute, Object> atts = new HashMap<TextAttribute, Object>();
atts.put(TextAttribute.KERNING, TextAttribute.KERNING_ON);
font = font.deriveFont(atts);