我有这项任务我在大学工作,我们必须做一个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() );
}
答案 0 :(得分:1)
如果您想将文字分隔为行,请使用textArea.setLineWrap(true);
也不要像{SHA33那样使用setText()
。据我所知,这种方法只需更改JTextArea中的文本。使用append
方法。如果您还要分隔文本,也可以在每行的末尾添加\n
。
你也可以看一下这篇文章:
答案 1 :(得分:0)
尝试在for循环中将结果返回到toString()并改为使用textarea1.setText(...)。
答案 2 :(得分:0)
这个怎么样?
String str = "";
for ( MyObject o : ArrayList1) {
str = str + o.toString();
}
textarea1.setText(str);