Object类型的ArrayList,用于在JTextArea中显示输出

时间:2013-04-01 09:39:14

标签: java swing arraylist jtextarea

我有这项任务我在大学工作,我们必须做一个GUI询问用户输入并在JTextArea中显示最终输出(Object类型的ArrayList),它们在不同的类中。问题是它只显示我覆盖的toString()方法的返回值。这是我的代码,这是非GUI类中的toString方法:

  @Override
    public String toString() {



        int u = 1;

        System.out.println("Team " + name + " has " + players.size() + " players");
        for(int i=0; i< players.size();i++)  {
            System.out.print(u++ + ".");
            System.out.println(players.get(i));
        }
              return "Team " + name + " has " + size + " players";

}
        }

这是从GUI类调用它的JTextArea:

public class GUI extends Team  {    
        //buttons 
        /constructor
      public  GUI() {

                frame = new JFrame("Team Manager");
                frame.setLayout(new BorderLayout());
                frame.setSize(300, 300);

          jta = new JTextArea(super.toString());
          frame.add(jta, BorderLayout.CENTER);  }

只有toString()的返回值显示在JTextArea中,我该怎么做才能逐行显示循环?我试过制作一个foreach循环并附加结果,也尝试了setText()和append()但是他们不接受类型对象,我应该怎么做呢?

              for ( MyObject o : ArrayList1) {
                textarea1.append( o.toString() );
                  }

3 个答案:

答案 0 :(得分:1)

如果您想将文字分隔为行,请使用textArea.setLineWrap(true);

也不要像{SHA33那样使用setText()。据我所知,这种方法只需更改JTextArea中的文本。使用append方法。如果您还要分隔文本,也可以在每行的末尾添加\n

你也可以看一下这篇文章:

  1. How to Use Text Areas
  2. Class JTextArea

答案 1 :(得分:0)

尝试在for循环中将结果返回到toString()并改为使用textarea1.setText(...)。

答案 2 :(得分:0)

这个怎么样?

String str = "";
for ( MyObject o : ArrayList1) {
    str = str + o.toString();
}
textarea1.setText(str);