如何在 javafx 中创建横跨整个高度的文本区域和侧边栏?
How to create a textarea and sidebar spanning full height in javafx?
我正在尝试在 JavaFX 中创建一个 UI,它应该有两列和一行。行应从上到下跨度(100% 高度),列应分别为 80% 和 20% 宽。在第一列中,我正在创建一个文本区域,而第二列有一个带有多个按钮的侧边栏。
我面临的问题是文本区域没有达到全高。我可以以 px 为单位更改高度,但我想按百分比更改。我尝试添加 RowConstraint,但它不起作用。知道我应该如何进行吗?
public void start(Stage primaryStage)
{
primaryStage.setTitle("Particles");
primaryStage.setResizable(false);
GridPane grid = new GridPane();
grid.setVgap(10);
grid.setHgap(10);
RowConstraints row1 = new RowConstraints();
row1.setPercentHeight(100);
ColumnConstraints column1 = new ColumnConstraints();
column1.setPercentWidth(80);
ColumnConstraints column2 = new ColumnConstraints();
column2.setPercentWidth(20);
TextArea environment = new TextArea();
grid.add(environment, 0, 0);
Button start = new Button("START");
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.CENTER);
hbBtn.getChildren().add(start);
grid.add(hbBtn, 1, 0);
Scene scene = new Scene(grid, 725, 500);
primaryStage.setScene(scene);
primaryStage.show();
}
我的输出:
您需要将 TextField
的 Vgrow Priority
添加为 Always
GridPane.setVgrow(environment, Priority.ALWAYS);
在您的代码中:
TextArea environment = new TextArea();
grid.add(environment, 0, 0);
GridPane.setVgrow(environment, Priority.ALWAYS);
输出:
我正在尝试在 JavaFX 中创建一个 UI,它应该有两列和一行。行应从上到下跨度(100% 高度),列应分别为 80% 和 20% 宽。在第一列中,我正在创建一个文本区域,而第二列有一个带有多个按钮的侧边栏。
我面临的问题是文本区域没有达到全高。我可以以 px 为单位更改高度,但我想按百分比更改。我尝试添加 RowConstraint,但它不起作用。知道我应该如何进行吗?
public void start(Stage primaryStage)
{
primaryStage.setTitle("Particles");
primaryStage.setResizable(false);
GridPane grid = new GridPane();
grid.setVgap(10);
grid.setHgap(10);
RowConstraints row1 = new RowConstraints();
row1.setPercentHeight(100);
ColumnConstraints column1 = new ColumnConstraints();
column1.setPercentWidth(80);
ColumnConstraints column2 = new ColumnConstraints();
column2.setPercentWidth(20);
TextArea environment = new TextArea();
grid.add(environment, 0, 0);
Button start = new Button("START");
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.CENTER);
hbBtn.getChildren().add(start);
grid.add(hbBtn, 1, 0);
Scene scene = new Scene(grid, 725, 500);
primaryStage.setScene(scene);
primaryStage.show();
}
我的输出:
您需要将 TextField
的 Vgrow Priority
添加为 Always
GridPane.setVgrow(environment, Priority.ALWAYS);
在您的代码中:
TextArea environment = new TextArea();
grid.add(environment, 0, 0);
GridPane.setVgrow(environment, Priority.ALWAYS);
输出: