2015-04-16 3 views
4

Я пытаюсь создать TextArea,прилагая текст в TextArea

@FXML 
private TextArea ta; 

и то, что я пытаюсь получить:

for (int i=1; i<=5; i++) { 
    ta.setText(" Field " + i + "\n"); 
} 

но показывают только последнюю строку: Field 5.
Может кто-нибудь помочь. Заранее спасибо.

+1

'ta.setText (" ")' перед циклом, затем в цикле 'ta.setText (ta.getText() +" Field "+ i +" \ n ");' – jewelsea

+3

Вы также можете использовать ' textArea.appendText ("Поле" + i + "\ n"); 'в цикле. –

ответ

3

Когда вы звоните setText("..."), вы заменяете текст, который уже есть. Поэтому либо создайте свою строку перед ее настройкой, либо добавьте ее. Попробуйте это:

String text=""; 
for (int i=1;i<=5;i++) { 
    text = text + " Field "+i+"\n"; 
} 
ta.setText(text); 

Примечание: Вы, вероятно, получите лучшую производительность, и это считается «хорошей практикой» использовать «StringBuilder» вместо строки для создания строки, как это. Но это должно помочь вам понять, в чем проблема, без чрезмерного усложнения.

+2

Если я правильно понимаю вещи, компилятор в любом случае преобразует код, который вы указали, в эквивалент с помощью StringBuilder. –

3

Метод .setText() ставит только одно значение в поле. Если значение существует, старый будет заменен. Попытка:

private StringBuilder fieldContent = new StringBuilder(""); 
for (int i=1;i<=5;i++) 
{ 
    //Concatinate each loop 
    fieldContent.append(" Field "+i+"\n"); 
} 
ta.setText(fieldContent.toString()); 

Это один из способов его достижения.

Смежные вопросы