我有一个对象数组,我想将它们打印到 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 的对象是几个当然对象。
最佳答案
由于并未发布所有代码,因此需要做出一些假设。我们假设 set.getEngCourse()
正确返回某个对象的数组,并且 set
不能为 null,并且 .getEngCourse()
> 如果没有类(class),则至少返回一个空数组而不是 null(如果可能违反这些假设中的任何一个,请添加适当的 null 检查)。如果返回的数组是某种特定类型(例如,EngCourse
),那就最好了,但操作代码并没有明确数组中的内容。
我会以类似于以下的方式解决该问题:
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 门类(class),而不仅仅是一门类(class)。
如果 TextArea
不是严格要求的,我也会考虑使用 JList
或类似的东西。基本上,将所有内容转储到 TextArea 中只是提供输出,而没有太多能力用它做任何其他事情(例如为将来的操作选择特定类(class))。例如,考虑这个 SO 答案 Java JList model 。本质上,使用适当的类对域进行建模,然后使用模型/ View / Controller 方法来显示域类,而不是将域视为本质上的 String 对象。
关于java - 对象数组到文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37101375/