Как исправить скачок видимой позиции этапа в JavaFX при запуске? - PullRequest
0 голосов
/ 11 мая 2019

Я запускаю программу JavaFX в IDEA в Ubuntu. Окно сначала располагается слева вверху экрана, а затем я вижу скачок окна в центр. Как я могу справиться с этим?

Я пробовал разные методы Stage, но это не помогло.

метод запуска

@Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("View/MainMenuView.fxml"));
        primaryStage.setTitle("Flash Cards");
        primaryStage.setScene(new Scene(root, 800, 600));
        primaryStage.setResizable(false);
        primaryStage.show();
    }

MainMenuView.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.Cursor?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controllers.MainMenuController">
   <children>
      <Pane fx:id="mainMenu" prefHeight="600.0" prefWidth="800.0">
         <children>
            <Text layoutX="233.0" layoutY="116.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Flash Cards v1" textAlignment="CENTER" wrappingWidth="333.419921875">
               <font>
                  <Font size="37.0" />
               </font>
            </Text>
            <Button fx:id="trainingButton" layoutX="314.0" layoutY="225.0" mnemonicParsing="false" prefHeight="75.0" prefWidth="172.0" style="-fx-background-color: #fff; -fx-border-color: #000; -fx-border-width: 2;" text="Training">
               <cursor>
                  <Cursor fx:constant="OPEN_HAND" />
               </cursor>
            </Button>
            <Button fx:id="addNewWordButton" layoutX="314.0" layoutY="325.0" mnemonicParsing="false" prefHeight="75.0" prefWidth="172.0" style="-fx-background-color: #fff; -fx-border-color: #000; -fx-border-width: 2;" text="Add a new word">
               <cursor>
                  <Cursor fx:constant="OPEN_HAND" />
               </cursor>
            </Button>
         </children>
      </Pane>
   </children>
</AnchorPane>

Я просто хочу, чтобы окно находилось в центре сразу после запуска моей программы.

1 Ответ

0 голосов
/ 11 мая 2019

Это ошибка в самом JavaFX. Обходной путь, пока он не исправлен, должен сделать это:

primaryStage.show();
primaryStage.centerOnScreen();

Вам нужно позвонить centerOnScreen() сразу после show(), чтобы он не появлялся в углу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...