JavaFX中的额外空间

时间:2015-12-26 00:09:12

标签: java javafx javafx-8

我正在研究JavaFX应用程序,在处理布局时,我注意到场景中有一个奇怪的额外空间。我没有要求空间在那里,我确保填充和间距设置为0。这是代码的(极度剥离)版本:

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

public class Test extends Application {

    private static final int PREF_WIDTH = 600;
    private static final int PREF_HEIGHT = 300;

    public void start(Stage primaryStage) {
        TextArea text = new TextArea();
        text.setMinWidth(PREF_WIDTH);
        text.setPrefWidth(PREF_WIDTH);
        text.setMaxWidth(PREF_WIDTH);
        text.setMinHeight(PREF_HEIGHT);
        text.setPrefHeight(PREF_HEIGHT);
        text.setMaxHeight(PREF_HEIGHT);

        VBox contentPane = new VBox();
        contentPane.getChildren().addAll(text);

        VBox mainPane = new VBox();
        mainPane.getChildren().addAll(contentPane);

        Scene scene = new Scene(mainPane);
        primaryStage.setResizable(false);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

导致:

enter image description here

我真正想要的是根本没有空间。

为什么会这样?你怎么摆脱它?

2 个答案:

答案 0 :(得分:1)

我改变了一些事情,这很有效:

public class Test extends Application {

    private static final int PREF_WIDTH = 600;
    private static final int PREF_HEIGHT = 300;

    @Override
    public void start(Stage primaryStage) {
        TextArea text = new TextArea();
        BorderPane content = new BorderPane(text);
        Scene scene = new Scene(content, PREF_WIDTH, PREF_HEIGHT);

        primaryStage.setResizable(false);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

也许你可以使用这段代码。在这种情况下,我设置了场景的宽度和高度。您还可以向BorderPane添加其他小部件。

答案 1 :(得分:-1)

text.setMinWidth(PREF_WIDTH);
text.setPrefWidth(PREF_WIDTH);
text.setMaxWidth(PREF_WIDTH);
text.setMinHeight(PREF_HEIGHT);
text.setPrefHeight(PREF_HEIGHT);
text.setMaxHeight(PREF_HEIGHT);

遥控线以上