Reputation: 10058
JavaFX newbie here, I'm trying to create a GridPane dynamically, so far I'm able to create it specifying the following:
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);
Any suggestions how to create it dynamically without specifying each element?
Thanks
Upvotes: 1
Views: 7939
Reputation: 1759
Using a for loop?
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);
Upvotes: 2