2013-08-27 3 views
1

내가 코딩 동안 오류 메시지와 함께, 나는 다음과 같은 코드 조각 추가 :은 자바 FX : ChangeListener의

nameComboBox.valueProperty().addListener(new ChangeListener<NameVO>() { 

     @Override 
     public void changed(
       ObservableValue<? extends NameVO> observable, 
       NameVO oldValue, NameVO newValue) { 
      // TODO Auto-generated method stub 

     } 
    }); 


을 그리고 이클립스는 addListener에서 나에게 레드 라인을 보여주는 그 I를 통해 마우스를 이동

The method addListener(ChangeListener<? super capture#6-of ?>) in the type ObservableValue<capture#6-of ?> is not applicable for the arguments (new ChangeListener<NameVO>(){})

왜이의 때문에 것 : 다음과 같은 메시지를 볼 수 있을까?

[참고 : 나는 남아있는 선택 상자 비슷한 일을했다,하지만 난 거기에 그런 메시지가 표시되지 AM]

답변

0

해결책을 얻었습니다.

다른 모든 ComboBox의 경우 해당 선언에는 해당 값 개체가 포함됩니다.

예를 들어

: ?의 장소에서

@FXML // fx:id="nameComboBox" 
private ComboBox<?> nameComboBox; // Value injected by FXMLLoader 

추가 NameVO하고 문제를 제거있어 :

@FXML // fx:id="projectComboBox" 
private ComboBox<ProjectVO> projectComboBox; // Value injected by FXMLLoader 

그러나, nameComboBox은 간단하게 선언했다.

0

그것은 ObservableValue<? extends NameVO>에 반대 ObservableValue<NameVO>을 기대하고있는 것으로 보인다. 시작하기

, 어떻게 당신이 명시 적으로 ChangeListener에 대한 형식 인수를 주장하는보고 :

new ChangeListener<NameVO>{ .... }

당신은 명시 적으로 NameVO이라고 주장하고 있지만 실제로 방법을 구현하기 위해 갈 때, 당신 변경 중입니다. ? extends NameVO

+0

감사를 추가합니다. 나는 이미 그것을 시도했다. '새로운 메서드가 변경 되었으면 (ObservableValue , NameVO, NameVO), 새로운 ChangeListener 타입 () {}은 슈퍼 타입 메소드를 오버라이드하거나 구현해야합니다. ' – Vikram

+0

새 오류 란 무엇입니까? –

-1

대답은 간단합니다, 바로 응답을 가져 오기에 아래

import javafx.scene.control.Toggle; 
+0

아니요 - 왜요? 어떻게 도움이 될까요? – kleopatra