JavaFX - 动态添加按钮到fxml创建的VBox

时间:2017-06-26 18:09:29

标签: java javafx fxml

我正在尝试将x个按钮添加到位于滚动窗格中的VBox。 Vbox和scrollpane都是用scenebuilder制作的。

但是我似乎无法将VBox作为变量连接到控制器。

产生场景的代码如下:

    Stage stage = MyMain.stage;
    stage.setScene(new Scene(FXMLLoader.load(getClass().getResource("/main/fxml/catEdit.fxml"))));
    stage.show();

我的FXML如下:

    <?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.VBox?>

<BorderPane maxHeight="-Infinity"
            maxWidth="-Infinity"
            minHeight="-Infinity"
            minWidth="-Infinity"
            prefHeight="400.0"
            prefWidth="600.0"
            xmlns="http://javafx.com/javafx/8.0.111"
            xmlns:fx="http://javafx.com/fxml/1"
            fx:controller="main.controllers.CatEditCon">
   <center>
      <ScrollPane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER">
        <content>
          <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="200.0" prefWidth="200.0">
               <children>
                  <VBox fx:id="catBox" alignment="CENTER" prefHeight="200.0" prefWidth="100.0" />
               </children></AnchorPane>
        </content>
      </ScrollPane>
   </center>
</BorderPane>

控制器是:

package main.controllers;

import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import main.MyMain;
import main.database.master.Category;
import main.fxml.custom.CatBut;


public class CatEditCon{

    @FXML public VBox catBox;

    public CatEditCon(){

        catBox = new VBox();
        updateScroll();
    }

    public void updateScroll(){

        Category cat = MyMain.baseData.getCategories();
        System.out.println(catBox);

        int len  = MyMain.baseData.getArticles().size();
        for(int i = 0 ; i < len; i++ ){

            System.out.println(""+i);

            Button b = new Button();
            catBox.getChildren().add(b);
        }
    }
}

我做错什么提示? 场景打开,sysout向上计数。但没有按钮出现? 如果catBox没有在构造函数中初始化,我得到一个nullPionter到该对象。所以就好像我没有连接到fxml对象。

0 个答案:

没有答案