我怎样才能在点击一个按钮的次数无限的或动态的号码添加新Button
?或用简单的话怎么能执行的功能添加更多按钮?
我试图在JavaFX中,但只增加了两个按钮在列表中。
@FXML
void addMoreButton(ActionEvent event) {
b[count]=new Button("+");
b[count].setOnMouseClicked(event2 -> {
count++;
b[count]=new Button("+");
list.setAll(b[count]);
vboxTest.getChildren().addAll(list);
});
list.add(b[count]);
vboxTest.getChildren().addAll(list);
}
但我直到用户要添加/按后退按钮动态地添加
只有最后添加的按钮应该叫下一个(指第二个按钮调用第三个按钮,并提出等第三呼叫)...
假设你使用的方法onAction
事件处理程序正好1键启动,你需要做两件事情正确更新的情景:
您可以通过访问该事件的源这样做:
@FXML
void addMoreButton(ActionEvent event) {
Button source = (Button) event.getSource();
source.setOnAction(null); // remove event handler
Button newButton = new Button("+");
newButton.setOnAction(this::addMoreButton);
vboxTest.getChildren().add(newButton);
}
注:我离开了故意列表/数组,因为数组限制元素(ArrayIndexOutOfBoundsException
)的数量,并应导致异常包含已在子列表null
/ A值,除非你设置数组的大小为1,允许你做一个呼叫。当然你可以保存在一个列表中的那些Button
s,如果其他代码需要你做到这一点。
不知道是否移除事件处理程序所期望的结果。不同的东西,如插入一个点击也可以完成后的新按钮:
@FXML
void addMoreButton(ActionEvent event) {
Node source = (Node) event.getSource();
Button newButton = new Button("+");
newButton.setOnAction(this::addMoreButton);
vboxTest.getChildren().add(vboxTest.getChildren().indexOf(source) + 1, newButton);
}