2012-06-11 2 views
0

Мне нужно получить определенную строку из текстового компонента с многострочной поддержкой. Так что это либо JTextArea, либо JTextPane.получить и написать строку с некоторым номером

Как получить линию 1, 2 или .. и т. Д.? Например получить line3 из текста ниже

line1 
line2 
line3 
line4 

И можно установить другое значение для некоторой линии? Для примера. установить lineNew вместо line2

line1 
lineNew 
line3 
line4 

Есть ли способ?

+0

Читать весь текст и заменить его в целом тексте? – fmucar

ответ

2

Чтобы получить текст в JTextComponent, используйте метод getText(), который вернет 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.

+0

+1. Вы были быстрее, чем я :) – GETah

2

Вы можете использовать JTextArea#replaceRange, чтобы заменить определенную строку.

Для получения определенной линии я не совсем уверен, но я думаю, что JTextArea#getLineCount, JTextArea#getLineStartOffset, JtextArea#getLineEndOffset позволит вам быстро извлечь определенную строку из текста. Или, как уже было предложено tskuzzy, получить полный текст и разбить его самостоятельно

1

Как получить строку 1, 2 или ... и т. Д.?

Получить текст из JTextArea/JTextPane по JTextArea.getText()/JTextPane.getText(). Когда у вас есть текст в виде строки, вы можете получить разные строки, разделив текст на новый символ линии как разделитель.

0
JTextArea jText = new JTextArea("line1\nline2\nline3\nline4"); 

String temp = jText.getText(); 

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

// Метод GetText

public String getText(int lineNos){ 

      return Str[lineNos].getText(); 

} 

// Метод SetText

public void setText(int lineNos){ 

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

}