java - 如何将 JTextArea 中的换行文本转换为多个行分隔的字符串

标签 java swing jtextarea word-wrap

我有一个具有以下属性的 JTextArea:

textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);

在 GUI 中,文本正常换行,但当我调用 textArea.getText(); 时,将返回单行文本,没有行分隔符。

我的问题是如何将“GUI 中的文本区域组件”中的文本转换为 String 或字符串数​​组?

图像示例:

enter image description here

最佳答案

可以通过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/

相关文章:

java - 我应该缓冲 InputStream 还是 InputStreamReader?

java - 单击时多行选择

java - 使用 Action 监听器实现颜色变化

java - 如何在 Java 中将 JTextArea 中的多行保存到文件中

java - 验证 AndroidManifest.xml 文件

java - 如何在 EJB JPA 中合并两个日期

java - 是否有适用于 Windows Mobile 的 JAVA FX 2.0+ 运行时

java - 如何将随机 int 分配给 JButton

java - JTabbedPane 与 JTextAreas。自动向下滚动

java - 如何在 Java 中的 JTextArea 类中添加滚动条?