2016-12-01 13 views
0

のJavaFX初心者の要素を追加、私はこれまでのところ、私は次のように指定し、それを作成することができるよ、動的GridPaneを作成しようとしています: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); 

せずにそれを動的に作成する方法任意の提案各要素を指定しますか?

ありがとうございました

答えて

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); 
+0

Urgh ...あなたはそれがそれらのすべてを使用したのと同じであることを知っているが、ImageView' 'ごとに一度に同じ画像を読み込んでいます... – fabian

+1

私は文字通り与えられたコードを貼り付け、コピーして、冗長な要素を削除、などユーザーに最もよく知られているように見えるようにします。私はそれが改善することに同意しますが、ここで重要なことは、要素を動的に追加する方法を理解することでした。 – Ironcache

関連する問題