2015-11-11 4 views
0

Мне нужно отобразить элементы ArrayList в JTextArea, включая новую строку после каждого отдельного элемента. Тем не менее, код теперь отображает все элементы в одной строке, разделенные запятыми; и открывающие и закрывающие скобки "[]". Код к настоящему времени следующий:Как я могу отобразить ArrayList в JTextArea

public void imprimirLista(ArrayList<Ausente> a) { 
    for (Ausente s: a) { 
     txtAreaAusentes.setText(a.toString()); 
    } 
} 

Как распечатать их без запятых и сменного номера?

+0

Возьмите каждый элемент и распечатайте его, а не распечатайте весь список. У вас есть цикл, чтобы получить каждый элемент, но вы никогда его не используете. Вы также каждый раз переустанавливаете текст в цикле, когда он выглядит так, как вы хотите добавить. – csmckelvey

ответ

1

Вы можете также append текст:

public void imprimirLista(ArrayList<Ausente> a) { 
    for (Ausente s : a) { 
     txtAreaAusentes.append(s.toString() + "\n"); // New line at the end 
    } 
} 
0

Вы должны заменить a с s в вашем выводе:

String output = ""; 
for (Ausente s: a) { 
    output += s.toString() + "\n"; 
} 

txtAreaAusentes.setText(output); 

построить также свой выход String первых затем установить текстовую область в outputString. Вы можете использовать StringBuilder, если вы хотите быть более эффективным ...

+0

Не используйте конкатенацию строк. Просто добавьте текст непосредственно в текстовую область. – camickr

+0

@camickr Я могу использовать конкатенацию String, если захочу. Нет ничего плохого в этом. – brso05

+0

@camickr infact, возможно, было бы более эффективно создавать 'String' с помощью' StringBuilder', а затем устанавливать его один раз, а не добавлять каждый раз в текстовую область. – brso05

1

Попробуйте использовать txtAreaAusentes.append(s.toString()); Одна вещь, которую я буду отметить это будет добавлять к любому существующему тексту это может быть в этой области. Если вы хотите удалить этот текст, я бы изменил эту функцию на

public void imprimirLista(ArrayList<Ausente> a) { 
    StringBuilder sb = new StringBuilder(); 
    for (Ausente s: a) { 
     sb.append(s.toString()); 
    } 
    txtAreaAusentes.setText(sb.toString()); 
} 
+0

Должно быть 's.toString()' not 'a.toString()' ... – brso05

+0

Нет необходимости в StringBuilder. Просто добавьте текст в текстовую область. – camickr

+0

@ brso05: Вы правы. Я пропустил это, когда копирую/вставляю оригинальную функцию. Я отредактировал свой ответ. – StephenS

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