public static void drawString(Graphics2D g , Font font , String text , int x , int y , int maxWidth) {
JLabel label = new JLabel(text);
label.setFont(font);
FontMetrics metrics = label.getFontMetrics(label.getFont());
int textH = metrics.getHeight();
int textW = metrics.stringWidth(label.getText()); //字符串的宽
String tempText = text;
while(textW > maxWidth) {
int n = textW / maxWidth;
int subPos = tempText.length() / n;
String drawText = tempText.substring(0 , subPos);
int subTxtW = metrics.stringWidth(drawText);
while(subTxtW > maxWidth) {
subPos--;
drawText = tempText.substring(0 , subPos);
subTxtW = metrics.stringWidth(drawText);
}
g.drawString(drawText , x , y);
y += textH;
textW = textW - subTxtW;
tempText = tempText.substring(subPos);
}
g.drawString(tempText , x , y);
}
本文介绍了一种使用Java Graphics2D API将过长文本分段并绘制到指定宽度的方法。通过计算字符串宽度并进行分割,确保文本不会超出设定的最大宽度。
2827

被折叠的 条评论
为什么被折叠?



