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