gpt4 book ai didi

JavaFX 8 - ListView 无法离开循环

转载 作者:行者123 更新时间:2023-11-30 07:19:40 25 4
gpt4 key购买 nike

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

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

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;
}
}

用户.java

public class User implements Serializable {

private String name;
private int age;

public User(String name, int age){
this.name = name;
this.age = age;
}

public String getName(){
return name;
}

public int getAge(){
return age;
}

public void setName(String name){
this.name = name;
}

public void setAge(int age){
this.age = age;
}

public void printData(){
System.out.println("Name: " + getName() + " - Alter: " + getAge());
}

public String toString(){
return "Name: " + getName() + " - Alter: " + getAge();
}

}

最佳答案

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

您将在 while 循环的每次迭代中创建一个新的迭代器。因此,每次循环检查其条件时,您总是会获得一个新的迭代器并从头开始(永远不会到达管理列表的末尾)

尝试更改为

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

关于JavaFX 8 - ListView 无法离开循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37791843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com