Javafx 使用prefHeight动态更改高度无效

Javafx 使用prefHeight动态更改高度无效,javafx,height,fxml,Javafx,Height,Fxml,这是我的开始方法: Parent root = FXMLLoader.load(getClass().getResource("login.fxml")); primaryStage.initStyle(StageStyle.TRANSPARENT); Scene scene1 = new Scene(root); scene1.setFill(Color.TRANSPARENT); primaryStage.initStyle(StageStyle.T

这是我的开始方法:

    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>

改变颜色是可行的,但无论我如何在fxml和控制器中使用maxheight和prefheight,它都不起作用。有什么想法吗?我的意思是,单击按钮时,从控制器的方法单击管理器手动更改高度。

您可以通过抓住窗口并在那里设置来更改高度这就是您的
单击管理器()
的外观

public void clickManager() {
    login.setOpacity(0);
    //loginPane.setPrefHeight(800);
    loginPane.getScene().getWindow().setHeight(700);
    loginPane.setStyle("-fx-background-color: black");
}
本市城市交通管理部门的维克奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈奈snfIn597.7奈奈奈何??? 另外,您不需要设置这个
primaryStage.initStyle(StageStyle.TRANSPARENT)两次

让阶段响应(调整)更改:

    loginPane.setPrefHeight(700);
    loginPane.getScene().getWindow().sizeToScene();

`prefHeight=“300.0”prefWidth=“600.0”`会更改高度和宽度。什么“不工作”?请解释您想要得到的是什么,并张贴说明它没有。单击按钮时,从控制器的clickmanager方法动态更改高度。是的,这是有效的,谢谢,但正如heyza22所述,我正在尝试更改主父级,但当我创建一个新的子级时,我可以更改其高度。这是否意味着后台正在考虑主父节点的高度?是的,因为您从未明确设置itI prefer c0der的答案,因为您没有考虑窗口装饰的大小,这导致场景小于传递给
stage.setHeight
的参数。另外,您可能不知道修改场景的所有可能情况对场景大小的影响…@Fabian It将其设置为完全相同的高度,而不管是什么装饰刚刚用不同的装饰并排测试了它们,您的意思是什么?注意:
minWidth=“-Infinity”
仅表示
区域。使用\u PREF\u size
    loginPane.setPrefHeight(700);
    loginPane.getScene().getWindow().sizeToScene();