AttributedString str = new AttributedString(types); str.addAttribute(TextAttribute.FONT, boxTextFont); TextMeasurer measure = new TextMeasurer(str.getIterator(), g.getFontRenderContext()); int breakIndex = measure.getLineBreakIndex(0, availableWidth); if (breakIndex < types.length()) { str = new AttributedString(types); str.addAttribute(TextAttribute.FONT, boxTextFontNarrow); measure = new TextMeasurer(str.getIterator(), g.getFontRenderContext()); breakIndex = measure.getLineBreakIndex(0, availableWidth);
AttributedString str = new AttributedString(nameStr); str.addAttribute(TextAttribute.FONT, boxTextFont); TextMeasurer measure = new TextMeasurer(str.getIterator(), g.getFontRenderContext()); int breakIndex = measure.getLineBreakIndex(0, availableWidth); if (breakIndex < nameStr.length()) { str = new AttributedString(nameStr); str.addAttribute(TextAttribute.FONT, boxTextFontNarrow); measure = new TextMeasurer(str.getIterator(), g.getFontRenderContext()); breakIndex = measure.getLineBreakIndex(0, availableWidth);
public TextLayout textLayout(FontRenderContext frc){ if (frc== null) throw new IllegalArgumentException("frc==null"); TextMeasurer tm = new TextMeasurer(getIterator(),frc); return textLayout(tm); }
// Compensate for the 50,50 of the drawString position g.translate(50, 50); g.setColor(Color.RED); Rectangle2D wrongBounds = fm.getStringBounds( text.getIterator(), 0, text.getIterator().getEndIndex(), g); g.draw(wrongBounds); System.out.println("wrong: "+wrongBounds); g.setColor(Color.BLUE); AttributedCharacterIterator iterator = text.getIterator(); TextMeasurer tm = new TextMeasurer(iterator, g.getFontRenderContext()); Rectangle2D rightBounds = tm.getLayout(0, iterator.getEndIndex()).getBounds(); g.draw(rightBounds); System.out.println("right: "+rightBounds);