向所有按钮添加相同的操作,但操作未应用于Javafx中的最后一个按钮

时间:2017-02-03 07:30:12

标签: java javafx javafx-2 javafx-8

我有FirstFxml.fxml文件,其控制器为FirstFxmlController。我需要根据sizeOfList创建自定义运行时按钮(目前假设为4)。我创建了以下代码并为其添加了操作。但它无法将此操作应用于最后一个按钮。通过单击最后一个按钮(即单击我4),setOnAction不起作用。我尝试使用lambda和handler,但同样的问题。以下代码是否有任何javafx问题,建议我对此问题进行更改。

public class FirstFxmlController实现Initializable {

@FXML
public VBox centerVBox;

@Override
public void initialize(URL location, ResourceBundle resources) {
    //Adding multiple buttons
    int sizeOfList = 5;
    StackPane stack[] = new StackPane[sizeOfList];
    Button b[] = new Button[sizeOfList];

    for(int i = 1; i<sizeOfList; i++){
            b[i] = new Button("Click me "+i);

        b[i].setOnAction(new EventHandler<ActionEvent>() {
            @Override public void handle(ActionEvent e) {
                System.out.println("Clicked");
            }
        });


        stack[i] = new StackPane();
        stack[i].setMargin(b[i], new Insets(20, 0, 0, 0));
        stack[i].getChildren().add(b[i]);
        centerVBox.getChildren().add(stack[i]);
    }

}

1 个答案:

答案 0 :(得分:1)

很抱歉这是我的错误,因为vbox位于边框窗格的中心部分,此边框窗格的大小已修复。所以会发生什么是最后一个按钮上的borderpane覆盖的底部元素。因此它导致最后一个按钮无法正常工作。问题解决了。我只是增加主屏幕的大小。感谢好友为您的即时重播和建议。