繁体   English   中英

JavaFX:带有ChangeListener的错误消息

[英]JavaFX: Error message with ChangeListener

在编写代码时,我添加了以下代码:

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>(){})

为什么会这样呢?

[注意:对于剩余的ComboBox,我也做了类似的事情,但是那边我没有得到这样的消息]

似乎期望使用ObservableValue<NameVO>而不是ObservableValue<? extends NameVO> ObservableValue<? extends NameVO>

首先,请查看如何显式说明ChangeListener的type参数:

new ChangeListener<NameVO>{ .... }

您明确声明它是NameVO但是当您实际实现该方法时,您将其更改为? extends NameVO ? extends NameVO

得到了解决方案!

对于所有其他ComboBox,声明涉及各自的value对象。

例如:

@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 ? 并摆脱了这个问题。

答案很简单,只需将以下内容添加到您的导入中

import javafx.scene.control.Toggle;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM