有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java水平和垂直调整文本区域大小

我用JavaFX创建了一个基本布局。如何使左下角的TextArea调整大小以使用完整的可用空白?目前,它只是水平调整大小,而不是垂直调整大小

守则:

public VBox addVBoxLeft() {

    VBox vBoxLeft = new VBox();
    vBoxLeft.setSpacing(10);
    vBoxLeft.setPadding(new Insets(10));

    //Content vBoxLeft
    Text titleGamesAvailable = new Text("Games available:");
    titleGamesAvailable.setFont(Font.font("Arial", FontWeight.BOLD, 14));
    TextArea chatHistory = new TextArea();
    chatHistory.setText("...");
    chatHistory.setEditable(false);
    chatHistory.setWrapText(true);
    chatHistory.setPrefColumnCount(2);

    vBoxLeft.setAlignment(Pos.TOP_LEFT);
    vBoxLeft.getChildren().addAll(titleGamesAvailable, availableGamesList(),chatHistory);

    return vBoxLeft;
}

private ListView<String> availableGamesList() {
    this.availableGamesListView = new ListView<String>();
    availableGamesListView.setItems(gamelist);
    return availableGamesListView;
}

public VBox addVBoxRight() {
    VBox vboxRight = new VBox();
    vboxRight.setPadding(new Insets(10));
    vboxRight.setSpacing(8);

    Text title = new Text("Users online:");
    title.setFont(Font.font("Arial", FontWeight.BOLD, 14));

    this.userOnlineListView = new ListView<String>();
    this.userlist = FXCollections.observableArrayList();
    userOnlineListView.setItems(userlist);
    VBox.setVgrow(userOnlineListView, Priority.ALWAYS);
    vboxRight.getChildren().addAll(title, userOnlineListView);

    return vboxRight;
}

private void _showView() {
    this.primaryStage = new Stage();
    primaryStage.setTitle("Carcassonne");

    // Als Grundlayout dient Borderpane
    BorderPane border = new BorderPane();
    border.setPrefSize(1024, 768);

    // HBox hbox = addHBox();
    border.setTop(addHBoxTop());
    border.setCenter(addVBoxLeft());
    border.setRight(addVBoxRight());


    Scene scene = new Scene(border);

    primaryStage.setScene(scene);
    primaryStage.setTitle("Lobby");
    primaryStage.setMinHeight(600);
    primaryStage.setMinWidth(800);
    primaryStage.setFullScreen(false);
    primaryStage.show();
}

截图:

enter image description here


共 (2) 个答案

  1. # 1 楼答案

    谢谢你的帮助。我使用了一个只有VBox的边框窗格,只有最上面的列表有一个VGow

  2. # 2 楼答案

    您需要使用AnchorPane并设置适当的约束来按您想要的方式拉伸文本区域