我有一个对象数组,我想将它们打印到JavaFX程序中的TextArea。我不知道该怎么做。我尝试的一切都不起作用。
for(int i = 0; i < set.getEngCourse().length; i++){
txt.append(set.getEngCourse()[i]);
if(i != set.getEngCourse().length -1){
txt.append("\n");
}
taken = new TextArea(txt.toString());
我试图进入TextArea的对象是几个课程对象。
答案 0 :(得分:1)
由于并未发布所有代码,因此需要做出一些假设。我们假设set.getEngCourse()
正确返回一些Object的数组,并且set
不能为null,并且.getEngCourse()
至少返回一个空数组,如果没有则返回null课程(如果可以违反这些假设中的任何一个,则添加适当的空检查)。如果返回的数组具有某种特定类型(例如EngCourse
),那将是最好的,但是OP代码不能清楚数组中的内容。
我会以类似于以下的方式接近解决方案:
StringBuilder txt = new StringBuilder(); // get something to collect the output
for (Object obj : set.getEngCourse) { // If possible, change Object to the specific type
// add a line break if we have already added something,
if (txt.length() > 0) {
txt.append("\n");
}
txt.append(String.valueOf(obj)); // will handle null objects
}
taken = new TextArea(txt.toString()); // assumes taken is declared elsewhere
如果有已知的对象类型,最好是:
.toString()
在迭代中使用特定对象类型
for (EngCourse ec : set.getEngCourse()) { //use specific type
...
txt.append(ec.toString()); //technically, the .toString() is not needed
}
此外,如果.getEngCourse()
返回多个对象,我建议将名称更改为.getEngCourses()
,以明确它正在返回 N 课程,而不仅仅是一个当然。
如果不严格要求TextArea
,我还会考虑使用JList
或类似内容。基本上,将所有内容转储到TextArea
只会提供输出,而没有太多能力对其进行任何其他操作(例如为将来的操作选择特定的课程)。例如,考虑这个SO答案Java JList model。实质上使用适当的类对域进行建模,然后使用模型/视图/控制器方法来显示域类,而不是将域视为String对象。
答案 1 :(得分:0)
你的txt对象是字符串吗?如果是这样,那你为什么要在你的代码片段的最后一行放一个txt.toString?
您可以使用setText函数显示文本区域中的内容。
更具体地发布错误或问题并扩展您的代码段,以便我们了解for循环的范围。