为什么尝试将arrayList对象输出到JtextArea不起作用?

时间:2010-10-26 21:18:46

标签: java object arraylist jtextarea

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类型。 当我使用普通的String变量设置文本时,输出显示为它应该。 当循环运行时,我能够通过JOptionPane获得输出。 存储在列表中的所有对象都是String对象。 如果我需要提供更多信息以便更准确地回答,请告诉我。

由于 - 将会 -

3 个答案:

答案 0 :(得分:1)

this.outputText.setText(""+o); 

您不应该使用setText(),因为您将替换现有文本。因此,只会显示最后一个字符串。

您应该使用:

this.outputText.append(""+o); 

答案 1 :(得分:0)

// 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());

答案 2 :(得分:0)

你也可以使用StringBuffer类..你可以将字符串附加在一起,最后使用.toString()方法。