gpt4 book ai didi

java - 从 fxml 加载器访问 fxml Controller 的方法

转载 作者:行者123 更新时间:2023-12-01 12:32:54 29 4
gpt4 key购买 nike

我想要做的是,如果调整场景(应用程序窗口)的大小,我想相应地调整窗口内内容的大小。我已经发布了到目前为止我已经完成的代码

加载器类

public class ResizingButtons extends Application {

@Override

public void start(Stage stage) throws Exception {

Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
scene.widthProperty().addListener(new ChangeListener<Number>() {

@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
try{
System.out.println("Scene Width Property is " + scene.getWidth());
}
catch(Exception e){
System.out.println("Error in width listener of scene" +e.getMessage());
}
}
});
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}

这是FXMLDocument.fxml fxml类的 Controller

public class FXMLDocumentController implements Initializable {

@FXML
public Button btn1;

@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}

public void changeBtnSize(){
btn1.setPrefHeight(200);
btn1.setStyle("-fx-background-color:red");
}
}

当调整窗口大小时,我想访问 Controller 类的changeBtnSize()方法。

最佳答案

您可以从FXMLLoader获取 Controller 实例。像这样重构你的代码:

@Override
public void start(Stage stage) throws Exception {
FXMLLoader loader = new FXMLLoader(getClass().getResource("FXMLDocument.fxml")); // Use loader instance
Parent root = loader.load();
FXMLDocumentController controller = loader.getController(); // Now you have controller refference here
//add your listener, feel free to use your controller inside listener implementation
}

关于java - 从 fxml 加载器访问 fxml Controller 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25802926/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com