0

我有这个我在大学工作的任务,我们必须做一个 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);  }

JTextArea 中仅显示 toString() 的返回值,如何使其逐行显示循环?我尝试过创建一个 foreach 循环并附加结果,也尝试过 setText() 和 append() 但它们不接受类型对象,我应该怎么做呢?

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

3 回答 3

1

如果要将文本分成几行,请使用textArea.setLineWrap(true);

也不要setText()像@SHA33 所说的那样使用。据我所知,此方法只是更改 JTextArea 中的文本。使用append方法。如果要分隔文本,也可以\n在每行末尾附加。

你也可以看看这篇文章:

  1. 如何使用文本区域
  2. 类 JTextArea
于 2013-04-01T09:51:14.057 回答
0

尝试在 for 循环内的 toString() 中返回结果,并改用 textarea1.setText(...) 。

于 2013-04-01T09:48:25.117 回答
0

这个怎么样?

String str = "";
for ( MyObject o : ArrayList1) {
    str = str + o.toString();
}
textarea1.setText(str);
于 2013-04-01T09:59:47.903 回答