0

我需要从具有多行支持的文本组件中获取某些行。所以它要么JTextArea要么JTextPane

如何获得第 1 行、第 2 行或 .. 等?例如line3从下面的文本中获取

line1
line2
line3
line4

是否可以为某行设置另一个值?例如。设置lineNew而不是line2

line1
lineNew
line3
line4

有什么办法吗?

4

4 回答 4

2

要获取 a 中的文本JTextComponent,请使用getText()将返回 a 的方法String

然后要获取行,将字符串拆分为\n.

JTextArea txt = new JTextArea("line1\nline2\nline3\nline4");
String s = txt.getText();
String[] lines = s.split("\n");
// now to access the second line, use lines[1]

现在如果要修改文本,可以使用setText(String)方法。

txt.setText("something else");

您还可以使用其他一些方法来更改文本,例如insert(String,int)append(String)replaceRange(String,int,int)。所有这些都记录在javadocs中。

于 2012-06-11T16:36:45.833 回答
2

可以JTextArea#replaceRange用来替换某行。

对于检索某行我不完全确定,但我认为JTextArea#getLineCount, JTextArea#getLineStartOffset,JtextArea#getLineEndOffset应该允许您从文本中快速提取某行。或者正如 tskuzzy 已经建议的那样,检索完整的文本并自己拆分

于 2012-06-11T16:38:42.120 回答
1

如何获得第 1 行、第 2 行或 .. 等?

JTextArea从/ JTextPaneby JTextArea.getText()/获取文本JTextPane.getText()。将文本作为字符串后,您可以通过使用换行符作为分隔符拆分文本来获得不同的行。

于 2012-06-11T16:38:43.037 回答
0
JTextArea jText = new JTextArea("line1\nline2\nline3\nline4");

String temp = jText.getText();

String[] tempArr = temp.split("\n");

// 获取文本的方法

public String getText(int lineNos){

             return Str[lineNos].getText();

}

// 设置文本的方法

public void setText(int lineNos){

            Str[lineNos].setText("Hello");   // Can also use Scanner here

}
于 2012-06-11T16:47:43.517 回答