如何像javaFX中的div一样动态生成VBox
我想根据结果的数量自动生成VBox。例如,如果结果数为3,则我希望自动生成3个VBox。 通过以下示例,我编写了以下代码: 但它不起作用:如何像javaFX中的div一样动态生成VBox,java,javafx,Java,Javafx,我想根据结果的数量自动生成VBox。例如,如果结果数为3,则我希望自动生成3个VBox。 通过以下示例,我编写了以下代码: 但它不起作用: @FXML private AnchorPane apne; @FXML private VBox vbxOuter; @FXML private VBox vbxInner; @Override public void initialize(URL location, ResourceBundle resources) { // TODO
@FXML
private AnchorPane apne;
@FXML
private VBox vbxOuter;
@FXML
private VBox vbxInner;
@Override
public void initialize(URL location, ResourceBundle resources) {
// TODO Auto-generated method stub
apne = new AnchorPane();
vbxOuter = new VBox();
getnewer(apne, vbxOuter, vbxInner);
}
public void getnewer(AnchorPane apne, VBox vbxtrue, VBox vbxmain){
for(int i = 0; i<3 ; i++){
vbxInner = new VBox(i+1);
vbxOuter.getChildren().add(vbxInner);
}
apne.getChildren().addAll(vbxOuter);
}
@FXML
私人锚烷;
@FXML
专用VBox vbxOuter;
@FXML
私有VBox-vbxInner;
@凌驾
公共void初始化(URL位置、ResourceBundle资源){
//TODO自动生成的方法存根
apne=新的锚烷();
vbxOuter=新的VBox();
getnewer(apne、vbxOuter、vbxInner);
}
公共空间(AnchorPane apne、VBox vbxtrue、VBox vbxmain){
for(int i=0;iapne
和vbxOuter
应该已经存在,并且如果您使用FXML创建了它们,它们应该可以用于您的方法。您所要做的就是在您的方法中填充vbxOuter
@FXML private AnchorPane apne;
@FXML private VBox vbxOuter;
@Override
public void initialize(URL location, ResourceBundle resources) {
apne.getChildren().add(vbxOuter);
int numberOfInnerVBoxes = 3;
getnewer(numberOfInnerVBoxes);
}
public void getnewer(int num){
for(int i = 0; i<num ; i++){
vbxOuter.getChildren().add(new VBox(i+1));
}
}
@FXML-私人锚烷呼吸暂停;
@FXML专用VBox vbxOuter;
@凌驾
公共void初始化(URL位置、ResourceBundle资源){
apne.getChildren().add(vbxOuter);
int numberofinnervbox=3;
getnewer(NumberOfInnerVbox);
}
public void getnewer(int num){
对于(int i=0;我移动这两行:apne=new AnchorPane();vbxOuter=new VBox();
。您正在创建注入的节点,因此在GUI上可见的实际上不是您在代码中处理的节点。我按照您所说的做了,现在我收到了以下错误:“添加了重复的子节点:父节点=AnchorPane”[id=apne]“无需担心。我在循环中添加了这行代码”vbxOuter=new VBox(i+1);“错误消失了。嘿,我尝试了你的代码,我得到了这个错误:“原因:java.lang.IllegalArgumentException:Children:replicate Children added:parent=AnchorPane[id=apne]”)我在循环中添加了这行代码“vbxOuter=new VBox(I+1)”,它不再显示错误