То, что вы ищете, это окно визуализации экрана, которое сообщает вам точный размер текста.
Это означает, что в какой-то момент вам нужно будет предоставить информацию о поверхности, на которой вы рисуете, и строке, которую вы рисуете. Причина в том, что система просто не знает визуальный результат до поздней визуализации. Я использовал:
Graphics2D g;
g.getFont().createGlyphVector(g.getFontRenderContext(),"abc").getVisualBounds();
Вы также можете попробовать:
Graphics2D g;
g.getFont().getMaxCharBounds(g.getFontRenderContext());
У меня тоже проблемы с прямыми методами шрифта.