2017-04-11 1 views
0

Je suis actuellement en train de créer une petite application d'interface utilisateur à des fins personnelles et j'ai rencontré un problème. Voici un code:JavaFX: minHeight de la scène compte tenu de la hauteur de la barre de titre

public void start(Stage stage) throws Exception { 
    Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("ui.fxml")); 

    Scene scene = new Scene(root); 

    stage.setTitle("My app"); 
    stage.setScene(scene); 
    stage.setMinHeight(608.0); 
    stage.setMinWidth(1080.0); 

    stage.show(); 
} 

Et voici le code FXML assiociated avec:

<GridPane gridLinesVisible="true" minHeight="608.0" minWidth="1080.0" xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1" fx:controller="my.package.MyClass"> 
    <rowConstraints> 
     <RowConstraints minHeight="500.0" prefHeight="500.0" vgrow="ALWAYS" /> 
     <RowConstraints maxHeight="108.0" minHeight="108.0" prefHeight="108.0" vgrow="NEVER" /> 
    </rowConstraints> 
</GridPane> 

Donc, mon problème est que, lors de son lancement, le GridPane aura pour effet une hauteur de 608px mais est encore redimensionnable à une plus petite hauteur. En effet, il sera redimensionnable jusqu'au stade sera 608px, y compris la hauteur de la barre de titre ...

Le comportement que je voudrais avoir est que mon GridPane ne peut pas avoir une hauteur inférieure à 608.0.

Savez-vous des façons de faire cela? Merci beaucoup d'avance!

+2

Il est un peu un hack, mais vous pouvez le faire 'stage.setMinHeight (stage.getHeight()); '(et de même pour la largeur) * après * vous appelez' stage.show() '. –

+0

Merveilleux, ça marche! Merci beaucoup mec – Dayrona

Répondre

3

Comme @James_D a souligné dans un commentaire, j'avais tout simplement de modifier mon code comme suit:

public void start(Stage stage) throws Exception { 
    Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("ui.fxml")); 

    Scene scene = new Scene(root); 

    stage.setTitle("My app"); 
    stage.setScene(scene); 

    stage.show(); 

    stage.setMinHeight(stage.getHeight()); 
    stage.setMinWidth(stage.getWidth()); 
}