1

コーディング中に、次のコードを追加しました。

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 についても同様のことを行いましたが、そのようなメッセージは表示されません]

4

3 に答える 3

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の場所に追加し?、問題を取り除きました。

于 2013-08-28T00:08:47.757 に答える
0

ObservableValue<NameVO>とは対照的に期待しているように見えますObservableValue<? extends NameVO>

まず、あなたの型引数をどのように明示的に述べているかを見てくださいChangeListener:

new ChangeListener<NameVO>{ .... }

あなたはそれがそうであることを明示的に述べていNameVOますが、実際にメソッドを実装するときは、それを次のように変更しています? extends NameVO

于 2013-08-27T23:54:28.337 に答える