您可以使用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);
现在,当您使用具有默认(或实际上任何)大小的字体来获得文本的宽度时,您可以缩放字体,以便文本适合指定的宽度,例如, 100像素:
font = font.deriveFont((float)(font.getSize2D() * 100/r2d.getWidth()));
同样,您可能必须限制字体大小,以便不超过可用的面板高度.
要改善渲染文本的外观,还应考虑在字体中启用文本渲染和/或字距调整支持的抗锯齿:
g.setRenderingHint(
RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
Map atts = new HashMap();
atts.put(TextAttribute.KERNING, TextAttribute.KERNING_ON);
font = font.deriveFont(atts);