JavaFX8-ListView不能离开循环

JavaFX8-ListView不能离开循环,java,Java,我刚刚编写了一个小的用户管理应用程序,您可以在其中创建“user”类型的对象。这些对象将保存在ArrayList中。现在我正试图通过gui上的ListView打印用户,但每当我启动JavaFX8应用程序时,都不会显示任何内容,直到2-3分钟后出现错误 看起来我的while()-循环不起作用。我还尝试只打印一个用户,使用以下代码及其工作方式,但我知道为什么它只打印一个用户: lv.getItems().add(verwaltung.iterator().next()); 我尝试使用以下代码打印完

我刚刚编写了一个小的用户管理应用程序,您可以在其中创建“user”类型的对象。这些对象将保存在ArrayList中。现在我正试图通过gui上的ListView打印用户,但每当我启动JavaFX8应用程序时,都不会显示任何内容,直到2-3分钟后出现错误

看起来我的while()-循环不起作用。我还尝试只打印一个用户,使用以下代码及其工作方式,但我知道为什么它只打印一个用户:

lv.getItems().add(verwaltung.iterator().next());
我尝试使用以下代码打印完整的ArrayList,但它不起作用。。看起来它没有离开循环。。q、 q

while(verwaltung.iterator().hasNext()) {
        lv.getItems().add(verwaltung.iterator().next());
    }
我感谢任何帮助……)

提前谢谢

user_gui.java

public class user_gui extends Application {

@Override
public void start(Stage primaryStage) throws Exception{
    Userverwaltung verwaltung = new Userverwaltung();
    verwaltung.addUser(new User("Brian", 19));
    verwaltung.addUser(new User("Adam", 10));
    verwaltung.addUser(new User("Jenny", 21));
    BorderPane bp = new BorderPane();
    ListView lv = new ListView();
    while(verwaltung.iterator().hasNext()) {
        lv.getItems().add(verwaltung.iterator().next());
    }
    System.out.print("Hallo");
    bp.setCenter(lv);
    Scene scene = new Scene(bp);
    primaryStage.setScene(scene);
    primaryStage.show();

}

public static void main(String args[]){
    launch(args);
}

}
Userverwaltung.java

 public class Userverwaltung {

private List<User> userlist = new ArrayList();
private File savefile = new File("users.ser");
private static int counter;

public Userverwaltung(){
    counter++;
}

public void addUser(User user){
    userlist.add(user);
}

public void printUsers(){
    Iterator<User> it = userlist.iterator();
    while(it.hasNext()) {
        it.next().printData();
    }
}

public void saveObjects(){
    try(FileOutputStream fos = new FileOutputStream(savefile);
            ObjectOutputStream oos = new ObjectOutputStream(fos);) {
        oos.writeObject(userlist);
    }catch(FileNotFoundException ex) {
        ex.printStackTrace();
    }catch(IOException ex) {
        ex.printStackTrace();
    }
}

public void loadObjects(){
    try(FileInputStream fis = new FileInputStream(savefile);
            ObjectInputStream ois = new ObjectInputStream(fis);) {
        this.userlist = (ArrayList) ois.readObject();
    }catch(FileNotFoundException ex) {
        ex.printStackTrace();
    }catch(ClassNotFoundException ex) {
        ex.printStackTrace();
    }catch(IOException ex) {
        ex.printStackTrace();
    }
}

public Iterator<User> iterator(){
    Iterator<User> it = userlist.iterator();
    return it;
}
}
在while循环的每次迭代中,您都在创建一个新的迭代器。 因此,每次循环检查其条件时,都会得到一个新的迭代器并从头开始(永远不会到达verwaltung列表的末尾)

试着把它改成

Iterator iterator = verwaltung.iterator();
while(iterator.hasNext()) {
    lv.getItems().add(iterator.next());
}

嘿,非常感谢你的帮助,现在开始工作了!:)没问题。如果答案解决了你的问题,那么请接受它作为答案。(见:):)是的,我不得不等3分钟。。但我们走了:)
while(verwaltung.iterator().hasNext()) {
    lv.getItems().add(verwaltung.iterator().next());
}
Iterator iterator = verwaltung.iterator();
while(iterator.hasNext()) {
    lv.getItems().add(iterator.next());
}