Object Array到TextArea

时间:2016-05-08 15:14:00

标签: java oop javafx textarea

我有一个对象数组,我想将它们打印到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的对象是几个课程对象。

2 个答案:

答案 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循环的范围。