我是编程的新手,目前使用JavaFX作为个人组织工具。我在这里展示了一个按钮(称为书籍)和阶段(称为bookStages)的arraylist,一个名为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++;
}
});
第一个按钮会在&#34; books&#34;中添加一个按钮。对VBox的arraylist。来自vbox的按钮应该从舞台arraylist打开一个舞台。您应该能够多次触发按钮,每次向vbox添加一个新按钮并设置该按钮以打开其自己的舞台。虽然看起来使用bookButtonCount作为参考是行不通的,因为每次按下vbox中book arraylist中的按钮时,它都会检查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));
}
答案 0 :(得分:3)
只需在创建按钮和阶段时注册处理程序:
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++ ;
});