2015-12-26 2 views
1

Я работал над приложением JavaFX, и, работая над макетом, я заметил странное дополнительное пространство в моей сцене. Я не просил, чтобы место было там, и я убедился, что для заполнения и интервала установлено значение 0. Вот (очень урезанная) версия кода:Дополнительное пространство в JavaFX

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

То, что я действительно хочу, нет места на всех.


Почему это происходит? Как вы избавитесь от него?

+0

Вы уверены, что это не артефакт инструмента отображения? Как насчет изменения цвета на красный или около того, и если он охватывает все окно? –

+0

Это из-за 'primaryStage.setResizable (false);'; установите его в значение «true» и увидите, если пробел исчез. См. [Здесь] (http://stackoverflow.com/questions/14759182/anchorpane-shows-a-white-border-when-setresizable-is-false-javafx). – pzaenger

+0

@pzaenger Вы, кажется, правы. Теперь вопрос заключается в том, как не допускать изменения размера, сохраняя при этом этот эффект. – TheCoffeeCup

ответ

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
text.setMinWidth(PREF_WIDTH); 
text.setPrefWidth(PREF_WIDTH); 
text.setMaxWidth(PREF_WIDTH); 
text.setMinHeight(PREF_HEIGHT); 
text.setPrefHeight(PREF_HEIGHT); 
text.setMaxHeight(PREF_HEIGHT); 

дистанционного выше линии

+0

Я все еще получаю пространство внизу. – TheCoffeeCup