Вы можете сделать это простым методом изменения размера, используя этот код:
package org.tw2.adaptedtext;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.HeadlessException;
import java.awt.Shape;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
/**
*
* @author util2
*/
public class Main {
public static void main(String[] args) {
ResizedTextFrame rtf = new ResizedTextFrame();
rtf.setVisible(true);
}
public static class ResizedTextFrame extends JFrame {
String title = "2D resized text example";
Font font = new Font("Tahoma", Font.PLAIN, 24);
Rectangle2D destRect = new Rectangle2D.Double(0, 0, 600, 200);
Shape textInShape;
double xText = 0, yText = 0;
public ResizedTextFrame() throws HeadlessException {
init();
}
private void init(){
setSize(800, 600);
setLocationRelativeTo(null); // Force center screen
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Get a shape for wanted settings
textInShape = getTextInRectangle(title, font, destRect);
}
@Override
public void paint(Graphics g) {
// Get a 2D context
Graphics2D g2d = (Graphics2D)g;
// Storage
AffineTransform oldTr = g2d.getTransform();
// Set the background to white
g2d.setColor(Color.white);
g2d.fillRect(0, 0, getWidth(), getHeight());
//============================================================= Text
// Settings
AffineTransform atText = new AffineTransform();
atText.setToTranslation(150 + xText, 150 + yText + destRect.getHeight());
g2d.setTransform(atText);
// Fill the text to red
g2d.setColor(Color.red);
g2d.fill(textInShape);
// Set the text outline to blue
g2d.setColor(Color.blue);
g2d.draw(textInShape);
// Restore
g2d.setTransform(oldTr);
//==================================================================
//=========================================== Rectangle (boundaries)
// Settings
AffineTransform atRect = new AffineTransform();
atRect.setToTranslation(150, 150);
g2d.setTransform(atRect);
// Draw a rectangle around the text to green
g2d.setColor(Color.green.darker());
g2d.draw(destRect);
// Restore
g2d.setTransform(oldTr);
//==================================================================
}
public Shape getTextInRectangle(String text, Font font, Rectangle2D destRectangle){
// Create a new image to get Graphics2D for measure
BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
// Create a FontRenderContext to prepare the calculation of elements of font
FontRenderContext frc = g2d.getFontRenderContext();
// Free graphics resources
g2d.dispose();
// Set the text
TextLayout txt = new TextLayout(text, font, frc);
// Get boundaries of text
Rectangle2D textBounds = txt.getBounds();
// Get percents (compare textBounds to destRectangle)
double percentX = destRectangle.getWidth() / textBounds.getWidth();
double percentY = destRectangle.getHeight() / textBounds.getHeight();
// Define an aspect transform
AffineTransform transform = new AffineTransform();
transform.setToScale(percentX, percentY);
//-- Specials settings for location of text ------------------------
xText = -txt.getBounds().getX() * percentX;
yText = -txt.getDescent() * percentY;
//------------------------------------------------------------------
// Get the shape
return txt.getOutline(transform);
}
}
}
Используемый метод: Shape getTextInRectangle(String text, Font font, Rectangle2D destRectangle)
.
Пример: 
Попробуйте сами!