Динамическое изменение высоты с помощью prefHeight не работает - PullRequest
0 голосов
/ 30 января 2019

Это мой метод запуска:

    Parent root = FXMLLoader.load(getClass().getResource("login.fxml"));

    primaryStage.initStyle(StageStyle.TRANSPARENT);
    Scene scene1 = new Scene(root);
    scene1.setFill(Color.TRANSPARENT);
    primaryStage.initStyle(StageStyle.TRANSPARENT);
    primaryStage.setScene(scene1);
    primaryStage.setTitle("Menu");
    primaryStage.show();

это мой FXML:

<Pane fx:id="loginPane"  maxHeight="-Infinity" maxWidth="- 
 Infinity"minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" 
 prefWidth="600.0" xmlns="http://javafx.com/javafx/8" 
 xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">

<children>
<Button fx:id="login" layoutX="250.0" layoutY="37.0" 
 mnemonicParsing="false" onMouseClicked="#clickManager" text="login" />
</children>
 </Pane>

И мой контроллер:

public class Controller implements Initializable {
    @FXML
    public Button login;
    @FXML
    public Pane loginPane;

    @FXML
    public void clickManager() {
        login.setOpacity(0);
        loginPane.setPrefHeight(700);
        loginPane.setStyle("-fx-background-color: black");
    }

    @Override
    public void initialize(URL location, ResourceBundle resources) {

    }
}

Изменение цвета работает, но неважно, как я играю с maxheight и prefheight в fxml и controller. Это просто не работает. Есть идеи?Я имею в виду динамическое изменение высоты из диспетчера кликов метода контроллера при нажатии кнопки.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Попросите сцену отреагировать (отрегулировать) на изменение:

    loginPane.setPrefHeight(700);
    loginPane.getScene().getWindow().sizeToScene();
0 голосов
/ 30 января 2019

Вы можете изменить высоту, взяв окно и установив его оттуда, вот как должен выглядеть ваш clickManager()

public void clickManager() {
    login.setOpacity(0);
    //loginPane.setPrefHeight(800);
    loginPane.getScene().getWindow().setHeight(700);
    loginPane.setStyle("-fx-background-color: black");
}

1005 * ̶ у вас в FXML поэтому оно не случайно Mess ни с чем

1007 * Также вам не нужно, чтобы установить это primaryStage.initStyle(StageStyle.TRANSPARENT); дважды в методе Start
...