我正在研究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);
}
}
导致:
我真正想要的是根本没有空间。
为什么会这样?你怎么摆脱它?
答案 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);
遥控线以上