在JavaFx中设置列表视图

在JavaFx中设置列表视图

问题描述:

我知道这已经被问过,但我真的没有从其他问题得到足够的。感谢您的阅读时间。我不能让编译的视图显示列表视图中的数据,我不知道什么即时通讯做错了。我使用java场景生成器,并将此类设置为控制器。可以在需要时提供更多信息在JavaFx中设置列表视图

import org.bson.Document; 
import com.mongodb.MongoClient; 
import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoCursor; 
import com.mongodb.client.MongoDatabase; 
import javafx.collections.FXCollections; 
import javafx.collections.ObservableList; 
import javafx.fxml.FXML; 
import javafx.scene.control.ListView; 

    public class DeanClassDbShowController { 
    //To hold the output, then the second one just in case 
    String test =""; 
    String combiner =""; 
    @FXML private ListView<String> dbList; 
    private final ObservableList<String> courses = FXCollections.observableArrayList(); 

    public void initialize() { 
     MongoClient mongoClient = new MongoClient("localhost", 27017); 
     MongoDatabase database = mongoClient.getDatabase("prog3"); 
     MongoCollection<Document> collection = database.getCollection("Courses"); 
     MongoCursor<Document> cursor = collection.find().iterator(); 
     { 
      while(cursor.hasNext()) 
      { 
       Document oldDoc = cursor.next(); 
       test = oldDoc.getString("courseName"); 
       combiner= ("Class: "+ test); 
       test = oldDoc.getString("courseNumber"); 
       combiner+= (" Class Number: "+test); 
       test = oldDoc.getString("instructor"); 
       combiner+= (" Instructor: "+ test); 
       test = oldDoc.getInteger("students").toString(); 
       combiner+= (" Students: "+ test); 
       courses.add(combiner); 
       //dbList.getItems().add(combiner);   
      } 
      dbList.setItems(courses); 
      //dbList = new ListView(courses); 
     } 
    } 
} 

编辑:listview正在显示正确的数据,它只是没有显示在它后面。

+0

为什么要为字符串变量使用字段?你似乎没有使用它们,除了在'initialize'方法中组装字符串。为此目的,局部变量就足够了。此外,围绕'while'循环引入一个新的范围和下面的语句似乎是不必要的。 – fabian

原来我有一些场景查看器设置错误。不得不改变我的固定细胞大小和不透明度,出于某种原因,我把它归零。