java - 即使整数更改后,如何使某些内容使用整数的先前值

标签 java arraylist javafx

我是编程新手,目前使用 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/

相关文章:

java - 我应该如何根据用户输入设置静态最终变量?

Java最喜欢的重构技术

java - 为什么我的对象没有正确反序列化?

java - 在一个类中调用 getName() 方法有效,但在另一个类中则无效

java - 如何在java中使用动态数据创建多个数组列表

java - 未知格式转换异常

java - Android listView ArrayList 类似搜索

JavaFX - 在应用程序启动时打开多个窗口

ubuntu - 无法调整场景生成器的窗口大小

java - 使 TableView 中的列在请求之前不可见