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