こんにちは私は現在、JavaFXのGridPaneで遊んでいて、問題に遭遇しました...中間の1つが成長してすべての空き領域を占める3行のレイアウトを作成したいのですがただそれを働かせることはできません。中央の行が大きくなりすぎて、ウィンドウの下の行が表示されなくなったところに「プッシュ」します。どうすれば下の行が常に下にあり、中の行が使用可能なスペースを占めるようになりますかその間には、しかし、これ以上...私は私のコードを貼り付けます。JavaFX - Gridpane Growing Issue
ありがとうございます!
(注:コードは少しわかりやすくするために変更されたが、同じように動作されています)
RowConstraints row1 = new RowConstraints(25);
row1.setVgrow(Priority.NEVER);
RowConstraints row2 = new RowConstraints();
row2.setVgrow(Priority.ALWAYS);
RowConstraints row3 = new RowConstraints(25);
row3.setVgrow(Priority.NEVER);
ColumnConstraints column1 = new ColumnConstraints();
column1.setPercentWidth(100);
gridPane.getRowConstraints().add(0, row1);
gridPane.getRowConstraints().add(1, row2);
gridPane.getRowConstraints().add(2, row3);
gridPane.getColumnConstraints().add(0, column1);
gridPane.add(node1, 0, 0);
gridPane.add(node2, 0, 1);
gridPane.add(node3, 0, 2);
UPDATE! Test
で定義されたグリッドペインすなわちあなたの "外側" の容器では "ミニマル完全、かつ検証例"
Test.java
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.MenuBar;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.RowConstraints;
import javafx.stage.Stage;
public class Test extends Application {
@Override
public void start(Stage primaryStage) {
GridPane grid = new GridPane();
MenuBar menuBar = new MenuBar();
TestPane pane = new TestPane();
RowConstraints menuRow = new RowConstraints(25);
RowConstraints regRow = new RowConstraints();
regRow.setPercentHeight(100);
ColumnConstraints regColumn = new ColumnConstraints();
regColumn.setPercentWidth(100);
grid.getColumnConstraints().addAll(regColumn);
grid.getRowConstraints().addAll(menuRow, regRow);
grid.add(menuBar, 0, 0);
grid.add(pane, 0, 1);
Scene scene = new Scene(grid, 500, 350);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
TestPane.java
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.RowConstraints;
public class TestPane extends GridPane {
public TestPane() {
RowConstraints fixedRow = new RowConstraints(25);
fixedRow.setVgrow(Priority.NEVER);
RowConstraints growingRow = new RowConstraints();
growingRow.setVgrow(Priority.ALWAYS);
ColumnConstraints column = new ColumnConstraints();
column.setPercentWidth(100);
this.getRowConstraints().addAll(fixedRow, growingRow, fixedRow);
this.getColumnConstraints().addAll(column);
TextField field1 = new TextField();
ListView list = new ListView<>();
TextField field2 = new TextField();
this.add(field1, 0, 0);
this.add(list, 0, 1);
this.add(field2, 0, 2);
}
}
私はそれが動作するように期待します。この問題は、レイアウト内の他の何かによって引き起こされている可能性があります。あなたが記述している効果を実証する[MCVE]を投稿できますか? –
@James_D Yepp!私は同じバージョンの問題を再現した短いバージョンを追加しました。あなたのコメントのおかげで=) – Estrozix