Почему эта попытка вывести объект arrayList в JtextArea не работает? - PullRequest
0 голосов
/ 27 октября 2010
ArrayList list_of_employees = new ArrayList();
@Action
public void reportAllEmployeesClicked(java.awt.event.ActionEvent evt)
{
    this.outputText.setText("");
    int i=0;
    //JOptionPane.showMessageDialog(null,"test Employee list print");
    ListIterator list_ir = list_of_employees.listIterator(); //list_of_employees is of    
       //obj type ArrayList
    while(list_ir.hasNext())
        {
            String o = new String();
            o = (String) list_ir.next();
            this.outputText.setText(""+o); // this does not work, why? nothing happens   
                //no errors and no output
            i++;
            JOptionPane.showMessageDialog(null,o); // this works
        }
}  

outputText имеет тип JTextArea, вложенный в область прокрутки.когда я устанавливаю текст с обычными строковыми переменными, вывод выглядит так, как должен.как цикл работает, я могу получить вывод через JOptionPane.Все объекты, хранящиеся в списке, являются объектами String.если есть какая-либо дополнительная информация, которую я должен предоставить, чтобы облегчить более точный ответ, дайте мне знать.

Ответы [ 3 ]

1 голос
/ 27 октября 2010
this.outputText.setText(""+o); 

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

Вы должны использовать:

this.outputText.append(""+o); 
0 голосов
/ 27 октября 2010

вы также можете использовать класс StringBuffer .. вы можете добавлять строки вместе и, наконец, использовать метод .toString ().

0 голосов
/ 27 октября 2010
// use generics
List<String> list_of_employees = new ArrayList<String>();

// use StringBuilder to concatenate Strings
StringBuilder builder = new StringBuilder();

// use advanced for loop to iterate a List
for (String employee : list_of_employees) {
      builder.append(employee).append(" ");  // add some space 
}

// after they are all together, write them out to JTextArea
this.outputText.setText(builder.toString());
...