在 JTextArea 中使用换行,将行换行到 JTextArea 中的特定位置

Use line wrap in JTextArea that wraps the line to a specific position in JTextArea

我有一个 JTextArea 从另一个 JTextArea 中提取文本并显示该文本,如下图所示:

我希望 JTextArea 像上图一样从写 rahul 的地方换行。 下面是我较小的 JTextArea 中的代码,其中的文本显示在较大的 JTextArea.

    SimpleDateFormat sdf=new SimpleDateFormat("HH:mm");

    String str=MainFrame.un+" ("+sdf.format(new Date())+")  :"+txtSend.getText();

    DataServices.send(runm+":"+str); // for sending this to its socket

    txtView.append("\n\n\t\t\t\t\t"+str);
    txtSend.setText("");
    txtSend.requestFocus(true);

i want it to start from where rahul is written just below that not from left edge of text area

这在 JTextArea 中不受支持。 JTextArea 用于显示简单的文本。

您可以使用 JTextPane。它允许您控制文本的属性,其中一个属性可以是左缩进。因此,您可以将单行的段落属性设置为缩进特定数量的像素。

因此,无需使用制表符来缩进文本,您只需在添加文本行时设置左缩进即可。

另请注意,JTextPane 未实现追加方法,因此您需要使用以下方法直接向文档添加文本来创建自己的追加方法:

textPane.getDocument.insertString(...);

所以基本逻辑是:

StyledDocument doc=(StyledDocument)textPane.getDocument();
doc.insertString(...);
SimpleAttributeSet attrs = new SimpleAttributeSet();
//StyleConstants.setFirstLineIndent(attrs, 50);
StyleConstants.setLeftIndent(attrs, 50);
doc.setParagraphAttributes(0,doc.getLength(),attrs, false);

这将更改您刚刚添加到文本窗格中的文本行的缩进。