Java- 使用 drawString() 进行文本换行
Java- textwrap with drawString()
java.awt.Graphics.drawString()
的正常语法包括定义字符串的 X 和 Y 坐标。我想绘制一个字符串,该字符串具有用于文本换行的宽度和高度属性。有没有办法为您要绘制的字符串指定 java.awt.Rectangle
?我是否需要写一些东西来决定自动换行应该在哪里切断,或者他们是一种更简单的方法?
谢谢!
我不认为有内置的方法可以做到这一点,但如果您使用如下所示的字符串宽度,您可以实现自己的包装:
FontMetrics fontMetrics = new FontMetrics(Graphics.getFont());
int width = fontMetrics.stringWidth("Potentially needs wrapping");
然后根据需要将消息拆分为多个字符串。
这实际上有点复杂,有些令人费解,但本质上,您需要利用 LineBreakMeasurer
class 来帮助您根据可用的情况将文本分解成可管理的块宽度
有关详细信息和示例,请参阅 Drawing Multiple Lines of Text
java.awt.Graphics.drawString()
的正常语法包括定义字符串的 X 和 Y 坐标。我想绘制一个字符串,该字符串具有用于文本换行的宽度和高度属性。有没有办法为您要绘制的字符串指定 java.awt.Rectangle
?我是否需要写一些东西来决定自动换行应该在哪里切断,或者他们是一种更简单的方法?
谢谢!
我不认为有内置的方法可以做到这一点,但如果您使用如下所示的字符串宽度,您可以实现自己的包装:
FontMetrics fontMetrics = new FontMetrics(Graphics.getFont());
int width = fontMetrics.stringWidth("Potentially needs wrapping");
然后根据需要将消息拆分为多个字符串。
这实际上有点复杂,有些令人费解,但本质上,您需要利用 LineBreakMeasurer
class 来帮助您根据可用的情况将文本分解成可管理的块宽度
有关详细信息和示例,请参阅 Drawing Multiple Lines of Text