2017-01-12 1 views
0

Je veux que mon application Javafx FXML démarre maximisée donc j'ai utilisé la méthode setMaximized(true) dans mon stage.Démarrer la fenêtre de l'application maximisée en JavaFX FXML ne fonctionne pas correctement

Le programme s'ouvre sous Maximized sans problème, mais le problème est qu'il y a une petite zone noire qui clignote pendant une demi-seconde au démarrage de l'application juste avant l'apparition de la fenêtre.

est ici un enregistrement (gif) de ce que je décris: enter image description here

je me suis dit que le problème est avec la scène comme il tente d'ouvrir dans son prefWidth & prefHeight il adapte jusqu'à adapter à la scène . Comment puis-je résoudre ce problème et faire démarrer le programme comme le font les programmes habituels?

voici mon départ() Méthode:

@Override 
public void start(Stage primaryStage) throws Exception{ 
    Parent root = FXMLLoader.load(getClass().getResource("editor.fxml")); 
    primaryStage.setTitle("Simple Text Editor"); 
    primaryStage.setScene((new Scene(root))); 
    primaryStage.setMaximized(true); 
    primaryStage.show(); 
} 
+1

Qu'est-ce qui se passe si vous construisez une version (. .exe/.jar) et l'exécuter ? Si le problème persiste, essayez d'appeler "primaryStage.show()" dans un nouveau thread (par exemple Platform.runLater()) –

+0

oui, la même chose se produit lors de l'exécution d'un pot. appeler aussi "primaryStage.show()" dans "Platform.runLater()" n'a rien changé. –

+0

Note: ajouter 'primaryStage.setResizable (false);', au lieu des rectangles blanc et noir, il montre une petite fenêtre qui devient soudainement maximisée. – Linuslabo

Répondre

0

La seule solution que je trouve est la suivante:

@Override 
public void start(Stage primaryStage) throws Exception{ 
    Parent root = FXMLLoader.load(getClass().getResource("editor.fxml")); 
    primaryStage.setTitle("Simple Text Editor"); 
    primaryStage.setScene(new Scene(root)); 
    primaryStage.setMinWidth(450); 
    primaryStage.setMinHeight(300); 

    Screen screen = Screen.getPrimary(); 
    Rectangle2D bounds = screen.getVisualBounds(); 
    primaryStage.setWidth(bounds.getWidth()); 
    primaryStage.setHeight(bounds.getHeight()); 

    primaryStage.setMaximized(true); 
    primaryStage.show(); 
}