Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当用户拖动以调整后台窗口的大小时,如何让JavaFX节点(textarea,textfield)正确调整大小?_Java_Javafx - Fatal编程技术网

当用户拖动以调整后台窗口的大小时,如何让JavaFX节点(textarea,textfield)正确调整大小?

当用户拖动以调整后台窗口的大小时,如何让JavaFX节点(textarea,textfield)正确调整大小?,java,javafx,Java,Javafx,当用户拖动以调整后台窗口的大小时,如何让JavaFX节点(textarea,textfield)正确调整大小 我有一段代码,它创建了一个带有两个节点(TextArea、TextField)的stagevbox。但是,当用户拖动以调整窗口大小时,这些组件不会按比例拖动。请看图片: 这是我的代码,有没有关于如何实现修复的建议,以便textfield始终位于底部,textarea扩展以填充空白?谢谢 Stage stage = new Stage(); VBox root = new VBox(

当用户拖动以调整后台窗口的大小时,如何让JavaFX节点(textarea,textfield)正确调整大小

我有一段代码,它创建了一个带有两个节点(TextArea、TextField)的stagevbox。但是,当用户拖动以调整窗口大小时,这些组件不会按比例拖动。请看图片:

这是我的代码,有没有关于如何实现修复的建议,以便textfield始终位于底部,textarea扩展以填充空白?谢谢

Stage stage = new Stage();  
VBox root = new VBox();
textArea = new TextArea();
textField = new TextField();
root.getChildren().addAll(textArea, textField);
textArea.setStyle("-fx-background-color: DARKGRAY;"
    + "-fx-text-fill: BLACK;"
    + "-fx-font-size: 14pt;");
textArea.setPrefSize(400, 316);
textArea.setEditable(false);
textArea.setWrapText(true);
textField.setStyle("-fx-background-color: DARKGRAY;"
    + "-fx-text-fill: BLACK;"
    + "-fx-font-size: 14pt;");

使用
VBox
,组件将在垂直方向上占用刚好足够的空间来安装。在这之后,
阶段的大小增加并没有什么区别

使用
边框窗格
。如果您使用了Swing,这类似于
BorderLayout
。这将使您可以将组件放置在
阶段的边界上,并放置在中间,即使调整大小后,这些组件也将保持在原来的位置

SSCCE:

package stack;

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

public class TextfieldAdjust extends Application {

    Scene scene;
    TextArea area;
    TextField field;
    BorderPane border;

    @Override
    public void start(Stage stage) throws Exception {
        border = new BorderPane();
        scene = new Scene(border);

        area = new TextArea();
        field = new TextField();

        area.setStyle("-fx-background-color: DARKGRAY;"
                + "-fx-text-fill: BLACK;"
                + "-fx-font-size: 14pt;");
        field.setStyle("-fx-background-color: WHEAT;"
                + "-fx-text-fill: BLACK;"
                + "-fx-font-size: 14pt;");

        border.setCenter(area);
        border.setBottom(field);

        stage.setScene(scene);
        stage.sizeToScene();
        stage.show();
    }
    public static void main(String[] args) {
        Application.launch("stack.TextFieldAdjust");
    }
}