使用 prefHeight 动态改变高度不起作用
Dynamically changing height with prefHeight is not working
这是我的启动方法:
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) {
}
}
更改颜色有效,但无论我如何在 fxml 和控制器中使用 maxheight 和 prefheight,这都不是 working.Any 想法?我的意思是在单击按钮时从控制器的方法单击管理器动态更改高度。
您可以通过抓住 window 并从那里设置它来更改高度,这就是您的 clickManager()
应该的样子
public void clickManager() {
login.setOpacity(0);
//loginPane.setPrefHeight(800);
loginPane.getScene().getWindow().setHeight(700);
loginPane.setStyle("-fx-background-color: black");
}
̶I̶ ̶w̶o̶u̶l̶d̶ ̶a̶l̶s̶o̶ ̶r̶e̶m̶o̶v̶e̶ ̶t̶h̶e̶ ̶-̶I̶n̶f̶i̶n̶i̶t̶y̶'̶s̶ ̶e̶x̶.̶̶m̶i̶n̶W̶i̶d̶t̶h̶=̶"̶-̶I̶n̶f̶i̶n̶i̶t̶y̶"̶
̶ ̶y̶o̶u̶ ̶h̶a̶v̶e̶ ̶i̶n̶ ̶y̶o̶u̶r̶ ̶f̶x̶m̶l̶ ̶s̶o̶ ̶i̶t̶ ̶d̶o̶e̶s̶n̶t̶ ̶a̶c̶c̶i̶d̶e̶n̶t̶a̶l̶l̶y̶ ̶m̶e̶s̶s̶ ̶w̶i̶t̶h̶ ̶a̶n̶y̶t̶h̶i̶n̶g̶
此外,您不需要在 Start 方法中设置此 primaryStage.initStyle(StageStyle.TRANSPARENT);
两次
让舞台响应(调整)变化:
loginPane.setPrefHeight(700);
loginPane.getScene().getWindow().sizeToScene();
这是我的启动方法:
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) {
}
}
更改颜色有效,但无论我如何在 fxml 和控制器中使用 maxheight 和 prefheight,这都不是 working.Any 想法?我的意思是在单击按钮时从控制器的方法单击管理器动态更改高度。
您可以通过抓住 window 并从那里设置它来更改高度,这就是您的 clickManager()
应该的样子
public void clickManager() {
login.setOpacity(0);
//loginPane.setPrefHeight(800);
loginPane.getScene().getWindow().setHeight(700);
loginPane.setStyle("-fx-background-color: black");
}
̶I̶ ̶w̶o̶u̶l̶d̶ ̶a̶l̶s̶o̶ ̶r̶e̶m̶o̶v̶e̶ ̶t̶h̶e̶ ̶-̶I̶n̶f̶i̶n̶i̶t̶y̶'̶s̶ ̶e̶x̶.̶̶m̶i̶n̶W̶i̶d̶t̶h̶=̶"̶-̶I̶n̶f̶i̶n̶i̶t̶y̶"̶
̶ ̶y̶o̶u̶ ̶h̶a̶v̶e̶ ̶i̶n̶ ̶y̶o̶u̶r̶ ̶f̶x̶m̶l̶ ̶s̶o̶ ̶i̶t̶ ̶d̶o̶e̶s̶n̶t̶ ̶a̶c̶c̶i̶d̶e̶n̶t̶a̶l̶l̶y̶ ̶m̶e̶s̶s̶ ̶w̶i̶t̶h̶ ̶a̶n̶y̶t̶h̶i̶n̶g̶
此外,您不需要在 Start 方法中设置此 primaryStage.initStyle(StageStyle.TRANSPARENT);
两次
让舞台响应(调整)变化:
loginPane.setPrefHeight(700);
loginPane.getScene().getWindow().sizeToScene();