2017-01-12 1 views
0

Я хочу, чтобы приложение Javafx FXML начало работать максимально, поэтому я использовал метод setMaximized(true) на моей сцене.Запустить окно приложения, максимизированное в JavaFX FXML, не работает должным образом

Программа открывается, так как в ней нет проблем, но проблема в том, что перед запуском приложения появляется небольшая черная область, которая начинает мигать в течение половины секунды.

Вот запись (GIF), что я описываю: enter image description here

я понял, что проблема со сценой, как он пытается открыть в prefWidth & prefHeight затем масштабируется, чтобы соответствовать стадии , Как я могу исправить это и запустить программу, как это делают обычные программы?

вот мой старт() метод:

@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

Что произойдет, если вы строите релиз (. EXE-/ .jar) и запустить его ? Если глюк все еще отображается, попробуйте вызвать «primaryStage.show()» в новом потоке (например, Platform.runLater()) –

+0

да, то же самое происходит при запуске фляги. также называющий «primaryStage.show()» в «Platform.runLater()» ничего не менял. –

+0

Примечание: добавление 'primaryStage.setResizable (false);', вместо белых и черных прямоугольников, показывает небольшое окно, которое внезапно становится максимизированным. – Linuslabo

ответ

0

Единственный способ решения проблемы я нашел это:

@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(); 
} 
Смежные вопросы