即使在整数更改后,如何使用整数的先前值

时间:2017-06-13 02:15:11

标签: java arraylist javafx

我是编程的新手,目前使用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));
   }

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