java - 对象数组到文本区域

标签 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 的对象是几个当然对象。

最佳答案

由于并未发布所有代码,因此需要做出一些假设。我们假设 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/

相关文章:

perl - 在 perl 中向现有对象添加新方法

JavaFX 外部目录和 jar 文件之外的资源

java - Android@Home 框架SDK

java - RxJava 中 doOnNext(...) 的目的是什么

python - 在 python 中使用 eval 动态创建类

使用 readObject() 接收对象时出现 java.lang.ClassCastException

java - 使用 CSS 从聚焦选项卡中删除发光边框

java - 从 java swing 框架使用 gmapsfx 库运行 javafx 类

java - 为什么这个在 Java 7 中编译而不在 Java 8 中编译?

java - Hibernate、Spring、PostgreSQL - 列索引超出范围