【问题标题】:Object Array to TextArea对象数组到 TextArea
【发布时间】:2016-05-08 15:14:00
【问题描述】:

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

【问题讨论】:

  • txt 对象是 StringBuilder 吗?
  • 只是一个字符串。应该是吗?
  • 您的代码缺少 }
  • StringBuilder 不使用对象数组。 @Loris Securo 我知道代码编辑器出于某种原因将其删除。
  • 你可以编辑你的问题并添加它

标签: java oop javafx textarea


【解决方案1】:

需要做出一些假设,因为并非所有代码都已发布。我们将假设set.getEngCourse() 正确返回某个对象的数组,并且set 不能为空,并且如果没有课程,.getEngCourse() 至少返回一个空数组而不是空(如果其中任何一个可以违反假设,添加适当的空检查)。最好返回的数组是某种特定类型(例如,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。本质上,对域建模使用适当的类,然后使用模型/视图/控制器方法来显示域类,而不是将域视为本质上的字符串对象。

【讨论】:

  • 不是这样,但非常接近。给了我一个很好的起点。我得到了它的工作谢谢:)
【解决方案2】:

你的 txt 对象是字符串吗?如果是这样,那你为什么要在你的 sn-p 的最后一行放一个 txt.toString 呢?

您可以使用 setText 函数来显示文本区域中的内容。

更具体地发布错误或问题并扩展您的代码 sn-p 以便我们了解 for 循环的范围。

【讨论】:

  • 我不能只使用 setText。我试图将一组对象放到 textArea 上。循环是我用来读取数组并尝试将其打印到文本区域的内容
  • txt的类型是什么?你遇到了什么错误?
  • txt.append(set.getEngCourse()[i]) 处的 NPE;我把它改成了 StringBuilder
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-04
  • 2019-05-07
  • 2022-01-24
  • 2017-11-12
  • 2012-07-02
  • 2020-11-15
  • 2011-01-10
相关资源
最近更新 更多