我是编程新手,目前使用 JavaFX 作为个人组织工具。我在这里展示了一个按钮(称为 books)和阶段(称为 bookStages)的数组列表,一个名为 addBook 的 VBox,以及一个名为 bookButtonCount 的 Int,设置为 0。
addBook.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
addBooks.getChildren().add(books.get(bookButtonCount));
books.get(bookButtonCount).setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
bookStages.get(bookButtonCount).show();
System.out.println(bookButtonCount);
}
});
bookButtonCount++;
}
});
第一个按钮将“books”数组列表中的一个按钮添加到 VBox。 vbox 中的按钮应该从舞台数组列表中打开一个舞台。您应该能够多次触发该按钮,每次向 vbox 添加一个新按钮并将该按钮设置为打开其自己的舞台。尽管使用 bookButtonCount 作为引用似乎不起作用,因为每次您按下 vbox 中书籍数组列表中的按钮时,它都会检查 bookButtonCount 的当前值。(随着添加更多按钮,该值会发生变化)并打开错误的阶段。
有没有办法让按钮的操作仅在设置时使用 bookButtonCount 的值保存?
如果没有,我该如何设置? 以下是一些可能有用的代码:
ArrayList<Stage> bookStages = new ArrayList();
ArrayList<Button> books = new ArrayList();
for (int i=0;i<10;i++){
books.add(new Button("Book " + (i+1)));
bookStages.add(new Stage());
bookStages.get(i).setTitle("Book " + (i+1));
}
最佳答案
只需在创建按钮和舞台时注册处理程序即可:
ArrayList<Stage> bookStages = new ArrayList();
ArrayList<Button> books = new ArrayList();
for (int i=0;i<10;i++){
Button button = new Button("Book " + (i+1));
books.add(button);
Stage stage = new Stage();
bookStages.add(stage);
stage.setTitle("Book " + (i+1));
button.setOnAction(e -> stage.show());
}
和
addBook.setOnAction(e -> {
addBooks.getChildren().add(books.get(bookButtonCount));
bookButtonCount++ ;
});
关于java - 即使整数更改后,如何使某些内容使用整数的先前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44511327/