我有一个具有以下属性的 JTextArea
:
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
在 GUI 中,文本正常换行,但当我调用 textArea.getText();
时,将返回单行文本,没有行分隔符。
我的问题是如何将“GUI 中的文本区域组件”中的文本转换为 String
或字符串数组?
图像示例:
最佳答案
可以通过textArea.size.width
获取JTextArea的宽度,然后通过textArea.getGraphics().getFontMetrics(textArea.getFont())获取JTextArea的字体规范
,使用 FontMetrics 您可以计算特定字符串的宽度 - fontMetrics.stringWidth("Some string here")
。
然后,例如,您可以逐一添加文本符号,直到超过 JTextArea 的宽度 - 并在添加时开始新行。
即
final String fullText = textArea.getText();
final int width = textArea.size.width;
final ArrayList lines = new ArrayList();
final FontMetrics fontMetrics = textArea.getGraphics().getFontMetrics(textArea.getFont());
StringBuilder sb = new StringBuilder();
for(final Character c : fullText) {
sb.append(c);
if(fontMetrics.stringWidth(sb.toString()) > width) {
sb.setLength(sb.length() - 1);
lines.add(sb.toString());
sb = new StringBuilder(c.toString());
}
}
lines.add(sb.toString());
关于java - 如何将 JTextArea 中的换行文本转换为多个行分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31519473/