我有我的UIController类和ButtonMethods类。 ButtonMethods类包含按钮操作的所有代码。我需要能够使用ButtonMethods类中的控制器类中的按钮。例如,我在控制器类中定义了这些

ButtonMethods button = new ButtonMethods();
@FXML Button buttonLockdown;
@FXML Button buttonRelease;


例如,在单击按钮Lockdown时有一个ActionEvent

@FXML
private void actionLockdown(ActionEvent event) {
    button.lockdown();


理想情况下,我希望ButtonMethods能够做到这一点:

public void lockdown() {
    buttonLockdown.setDisable(true);
    onLockdown = true;
    buttonRelease.setDisable(false);


由于各种原因,我不能仅仅将代码放入动作事件中,而将按钮对象放入参数中会使我的工作变得混乱。那么如何将FXML对象放入按钮类呢?

最佳答案

尝试发送UIController本身作为参数:

private UIController thisController;

@Override
public void initialize(URL url, ResourceBundle rb) {
    thisController = this;
}

@FXML
private void actionLockdown(ActionEvent event) {
    button.lockdown(thisController);


然后

public void lockdown(UIController controller) {
    controller.getButtonLockdown().setDisable(true);
    onLockdown = true;
    controller.getButtonRelease().setDisable(false);


您还可以在适当的情况下使用绑定。

09-13 05:22