首页 > 解决方案 > 如何使 TextArea 填充屏幕的中心?

问题描述

我正在使用 JavaFx,我想创建一个 TextArea 来填充屏幕的中心。我正在尝试使用 BorderPane,但无论我在窗格中的哪个位置(顶部、底部、中心等)设置它,它始终位于屏幕顶部。我也无法调整列数。

    primaryStage.setTitle("Cauldron");
    VBox root = new VBox();
    Scene scene = new Scene(root, 1280, 720);
    BorderPane borderPane = new BorderPane();

    MenuBar menuBar  = new MenuBar();
    Menu    menuFile = new Menu("File");
    Menu    menuEdit = new Menu("Edit");
    Menu    menuView = new Menu("View");
    Menu    menuHelp = new Menu("Help");

    menuBar.getMenus().addAll(menuFile,menuEdit,menuView,menuHelp);
    borderPane.setTop(menuBar);

    TextArea textArea = new TextArea();
    borderPane.setCenter(textArea);

    root.getChildren().add(borderPane);
    primaryStage.setScene(scene);
    primaryStage.show();

这是我的代码,这就是它创建的。

标签: javajavafx

解决方案


文本区域填充边框窗格的中心。问题是边框窗格没有增长到超出其在VBox.

无论如何,VBox实际上似乎并没有执行任何有用的目的:您可以简单地将边框窗格设置为场景的根:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.TextArea;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class LayoutTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        BorderPane borderPane = new BorderPane();
        Scene scene = new Scene(borderPane, 1280, 720);

        MenuBar menuBar  = new MenuBar();
        Menu    menuFile = new Menu("File");
        Menu    menuEdit = new Menu("Edit");
        Menu    menuView = new Menu("View");
        Menu    menuHelp = new Menu("Help");

        menuBar.getMenus().addAll(menuFile,menuEdit,menuView,menuHelp);
        borderPane.setTop(menuBar);

        TextArea textArea = new TextArea();
        borderPane.setCenter(textArea);

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

    }

    public static void main(String[] args) {
        launch(args);
    }
}

如果您确实需要,您可以指示它始终为withVBox提供可用的额外空间BorderPane

VBox.setVgrow(borderPane, Priority.ALWAYS);

推荐阅读