JavaFX установка корня сцены приводит к изменению размера root - PullRequest
0 голосов
/ 21 февраля 2019

Я обнаружил, что когда я устанавливаю корень сцены (как рекомендовано - вместо того, чтобы просто устанавливать сцену), размер корневой панели изменяется и не вписывается в сцену должным образом, даже если я предоставляю те же размеры, что иэтап.Скриншоты можно увидеть по ссылкам ниже.

Если я использую функцию setScene, она работает так, как ожидается, и корневая панель имеет правильный размер, но между сменами сцен вспыхивает белый экран.

Вот примеры из моего проекта:

// resizes root pane - too small for stage
public void handle(MouseEvent event) {
    if (event.getSource() instanceof Button) {
        Button sourceButton = (Button)event.getSource();
        Stage primaryStage = (Stage ((Node)event.getSource()).getScene().getWindow();

        if (sourceButton.getId().equals("back-button")) {
            primaryStage.getScene().setRoot(view.getWelcomePane()); 
        }
    }
}

public Pane getWelcomePane() {
    return new BorderPane(bpWelcomeMain); // bpWelcomeMain is the border pane that contains the page components
}

Или:

// produces 'flashing' between scene transition (but root pane is correct size)
public void handle(MouseEvent event) {
    if (event.getSource() instanceof Button) {
        Button sourceButton = (Button)event.getSource();
        Stage primaryStage = (Stage ((Node)event.getSource()).getScene().getWindow();

        if (sourceButton.getId().equals("back-button")) {
            primaryStage.setScene(view.getWelcomeScene()); 
        }
    }
}

public Pane getWelcomeSceme() {
    return new Scene(bpWelcomeMain, 1500, 750); // bpWelcomeMain is the border pane that contains the page components
}

Я пробовал sizeToScene (), а также другие вещи, упомянутые в других постах, ноМне еще предстоит найти решение.Функция setRoot (), кажется, работает на одной из моих страниц, но не на других, хотя они все одинакового размера и код для переключения между корневыми панелями одинаков.Я не понимаю, почему setRoot () работает для одной, но не работает для других страниц.Я также не понимаю, почему setScene () создает корневую панель правильного размера, а setRoot () - нет.

Итак, я хотел бы использовать функцию setRoot () без изменения размера корневой панели или setScene () без вспышки между переходами между сценами (это нарушает текучесть пользовательского интерфейса).Есть ли способ?

Это результат setScene () (хотя он выглядит хорошо из-за мигания между сменами сцен, я чувствую, что может понадобиться предупреждение об эпилепсии, ха-ха)

Это результат setRoot ()

Любая помощь будет принята с благодарностью.

...