gpt4 book ai didi

java - 为什么我不能从事件监听器调用方法,但可以在类的其他地方调用方法?

转载 作者:行者123 更新时间:2023-12-01 07:57:08 24 4
gpt4 key购买 nike

我在 JavaFX GUI 的 Controller 类中包含以下代码,该代码为组合框提供事件监听器:

courseComboBox.getSelectionModel().selectedItemProperty()
.addListener(new ChangeListener<String>() {
@Override
public void changed(
ObservableValue<? extends String> selected,
String oldValue, String newValue) {

// Do stuff

}
});

但是,当我尝试从其中调用另一个方法时,我无法:

courseComboBox.getSelectionModel().selectedItemProperty()
.addListener(new ChangeListener<String>() {
@Override
public void changed(
ObservableValue<? extends String> selected,
String oldValue, String newValue) {

this.setClassList(courseProcessed);

// Do Stuff

}
});

不过,我可以在类的其他地方调用该方法。更具体地说,我可以在该监听器也驻留在其中的 Controller 的 initialize() 函数内调用它。为什么我会遇到此问题?

最佳答案

因为监听器中的 this 指的是监听器当前实例,而不是 Controller 实例。要引用容器实例,请使用语法 ControllerClassName.this

关于java - 为什么我不能从事件监听器调用方法,但可以在类的其他地方调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28653962/

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