如何将 TextArea 中的换行文本转换为多个以行分隔的字符串
How to get line-wrapped text from JTextArea into multiple line-seperated Strings
我有一个 JTextArea
具有以下属性:
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
在 GUI 中,文本正常换行,但是当我调用 textArea.getText();
时,返回的是一行没有行分隔符的文本。
我的问题是如何将文本区域组件 'as it is in the 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());
阅读 javadoc - 总是内容丰富。
int lineCount = textArea.getLineCount();
String[] lines = new String[lineCount];
String text = textArea.getText();
for (int i = 0; i < lineCount; ++i) {
int offset = textArea.getLineStartOffset(i);
int offset2 = textArea.getLineEndOffset(i);
lines[i] = text.substring(offset, offset2);
}
不确定这是否换行。
我有一个 JTextArea
具有以下属性:
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
在 GUI 中,文本正常换行,但是当我调用 textArea.getText();
时,返回的是一行没有行分隔符的文本。
我的问题是如何将文本区域组件 'as it is in the 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());
阅读 javadoc - 总是内容丰富。
int lineCount = textArea.getLineCount();
String[] lines = new String[lineCount];
String text = textArea.getText();
for (int i = 0; i < lineCount; ++i) {
int offset = textArea.getLineStartOffset(i);
int offset2 = textArea.getLineEndOffset(i);
lines[i] = text.substring(offset, offset2);
}
不确定这是否换行。