JavaFX GridPane 动态添加元素

标签 java javafx

这里是 JavaFX 新手,我正在尝试动态创建 GridPane,到目前为止我能够创建它并指定以下内容:

GridPane gridPaneMain = new GridPane();

           gridPaneMain.add(button1, 0, 0, 1, 1);
           gridPaneMain.add(button2, 1, 0, 1, 1);
           gridPaneMain.add(button3, 2, 0, 1, 1);
           gridPaneMain.add(button4, 3, 0, 1, 1);
           gridPaneMain.add(button5, 4, 0, 1, 1);
           gridPaneMain.add(button6, 5, 0, 1, 1);
           gridPaneMain.add(button7, 6, 0, 1, 1);
           Scene scene = new Scene(gridPaneMain, 800, 800);

           ImageView imv1 = new ImageView();
           ImageView imv2 = new ImageView();
           ImageView imv3 = new ImageView();
           ImageView imv4 = new ImageView();
           ImageView imv5 = new ImageView();
           ImageView imv6 = new ImageView();
           ImageView imv7 = new ImageView();

           Image image1 = new Image(BoardGameMain.class.getResourceAsStream("viewcontrollers/blank.png"));
           imv1.setImage(image1);
           imv2.setImage(image1);
           imv3.setImage(image1);
           imv4.setImage(image1);
           imv5.setImage(image1);
           imv6.setImage(image1);
           imv7.setImage(image1);

           final HBox pictureRegion1 = new HBox();
           final HBox pictureRegion2 = new HBox();
           final HBox pictureRegion3 = new HBox();
           final HBox pictureRegion4 = new HBox();
           final HBox pictureRegion5 = new HBox();
           final HBox pictureRegion6 = new HBox();
           final HBox pictureRegion7 = new HBox();

           pictureRegion1.getChildren().add(imv1);
           pictureRegion2.getChildren().add(imv2);
           pictureRegion3.getChildren().add(imv3);
           pictureRegion4.getChildren().add(imv4);
           pictureRegion5.getChildren().add(imv5);
           pictureRegion6.getChildren().add(imv6);
           pictureRegion7.getChildren().add(imv7);

           gridPaneMain.add(pictureRegion1, 0, 1);
           gridPaneMain.add(pictureRegion2, 1, 1);
           gridPaneMain.add(pictureRegion3, 2, 1);
           gridPaneMain.add(pictureRegion4, 3, 1);
           gridPaneMain.add(pictureRegion5, 4, 1);
           gridPaneMain.add(pictureRegion6, 5, 1);
           gridPaneMain.add(pictureRegion7, 6, 1);

有什么建议如何在不指定每个元素的情况下动态创建它吗?

谢谢

最佳答案

使用for循环?

GridPane gridPaneMain = new GridPane();
Image image = new Image(
            BoardGameMain.class.getResourceAsStream("viewcontrollers/blank.png"));
for (int x = 0; x <= 6; ++x) {
    Button button = ...;
    gridPaneMain.add(button, x, 0, 1, 1);
    ImageView imv = new ImageView();
    imv.setImage(image);
    final HBox pictureRegion = new HBox();
    pictureRegion.getChildren().add(imv);
    gridPaneMain.add(pictureRegion, x, 1);
}
Scene scene = new Scene(gridPaneMain, 800, 800);

关于JavaFX GridPane 动态添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40916251/

相关文章:

Java 流 : filter(). count() 与 anyMatch()

java - math.random,只生成一个 0?

java - 使用 jaxb2 基础知识生成 toString 方法时,如何使用绑定(bind)文件排除字段

javafx - 将 TextField 绑定(bind)到 ListView 项

java - JPanel GridBagLayout 到 GridPane

转换后的 Maven 项目中文件的 JavaFx InvocationTargetException

使用Intellij IDEA部署Javafx maven项目

使用SVN版本控制系统时的Java IO问题

JavaFX 应用程序无法使用 native exe bundle 启动

java - 对 Java 客户端和 WebSphere MQ 使用 SSL 支持