在编写代码时,我添加了以下代码:
nameComboBox.valueProperty().addListener(new ChangeListener<NameVO>() {
@Override
public void changed(
ObservableValue<? extends NameVO> observable,
NameVO oldValue, NameVO newValue) {
// TODO Auto-generated method stub
}
});
Eclipse正在显示addListener
下的红线,并将鼠标移到我可以看到以下消息:
The method addListener(ChangeListener<? super capture#6-of ?>) in the type ObservableValue<capture#6-of ?> is not applicable for the arguments (new ChangeListener<NameVO>(){})
为什么会因为?
[注意:我为剩下的ComboBoxes做了类似的事情,但我没有收到这样的消息]
答案 0 :(得分:0)
似乎期待ObservableValue<NameVO>
而不是ObservableValue<? extends NameVO>
。
首先,请看一下如何明确说明ChangeListener
的类型参数:
new ChangeListener<NameVO>{ .... }
您明确声明它是NameVO
但是当您真正去实施该方法时,您将其更改为? extends NameVO
答案 1 :(得分:0)
得到了解决方案!
对于所有其他ComboBox,声明涉及相应的值对象。
例如:
@FXML // fx:id="projectComboBox"
private ComboBox<ProjectVO> projectComboBox; // Value injected by FXMLLoader
但是,nameComboBox
简单地声明为:
@FXML // fx:id="nameComboBox"
private ComboBox<?> nameComboBox; // Value injected by FXMLLoader
在NameVO
的地方添加了?
并解决了问题。
答案 2 :(得分:-1)
答案很简单,只需将以下内容添加到导入
即可import javafx.scene.control.Toggle;