2016-10-09 7 views
2

私はJavaFXでトレーニングするための小さなソフトウェアを開発しています。JavaFXでのアンドロイドの重み付け

LinearLayoutの中では、変数android:weight="someValue"を設定することで空き領域全体を埋めるためにビューを拡張できますが、残念ながらこれはJavaFXです。

私はmax/min/prefの高さで作業しようとしましたが、動作しませんでした。

本当にありがとうございます。

答えて

2

あなたは親が成長する際に、それらのNode sが(彼らはサイズ変更可能と仮定)の成長になりたPriority.ALWAYSに子供(またはそれらの一部)のvgrow/hgrow静的プロパティを設定することができますVBox/HBoxを使用します。

private static Region createRegion(String color) { 
    Region region = new Region(); 
    region.setStyle("-fx-background-color: "+color); 
    return region; 
} 

@Override 
public void start(Stage primaryStage) { 
    VBox vbox = new VBox(
      createRegion("red"), 
      createRegion("blue"), 
      createRegion("green") 
    ); 
    for (Node n : vbox.getChildren()) { 
     VBox.setVgrow(n, Priority.ALWAYS); 
    } 

    Scene scene = new Scene(vbox); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

が子どもの相対的な重みを制御するには、代わりに GridPaneを使用して ColumnConstraints/ RowConstraintspercentWidth/ percentHeightプロパティを設定することができます。

@Override 
public void start(Stage primaryStage) throws IOException { 
    GridPane root = new GridPane(); 

    root.getColumnConstraints().addAll(DoubleStream.of(30, 2, 68) 
      .mapToObj(width -> { 
       ColumnConstraints constraints = new ColumnConstraints(); 
       constraints.setPercentWidth(width); 
       constraints.setFillWidth(true); 
       return constraints; 
      }).toArray(ColumnConstraints[]::new)); 

    RowConstraints rowConstraints = new RowConstraints(); 
    rowConstraints.setVgrow(Priority.ALWAYS); 

    root.getRowConstraints().add(rowConstraints); 

    root.addRow(0, Stream.of("red", "green", "blue").map(s -> createRegion(s)).toArray(Node[]::new)); 

    Scene scene = new Scene(root); 

    primaryStage.setScene(scene); 

    primaryStage.show(); 
} 
+0

ありがとうございました!これは完璧です – Matteo

関連する問題