JavaFX 응용 프로그램을 코딩하고 있습니다. SceneBuilder 8.2로 GUI를 만들었습니다. 이미 ChoiceBox를 넣었지만 사용자 정의 유형이 아닌 Java 유형을 사용합니다. 그리고 잘 작동합니다. 그러나 사용자 정의 유형을 사용하면 choiceBox가 인스턴스화되지 않습니다. 이유가 무엇입니까? 코드 아래 :JavaFX 사용자 지정 ChoiceBox가 시작시 인스턴스화되지 않았습니다.
public class PelController {
//instanciation is OK
@FXML
private ChoiceBox<PeriodeEnum> fCalculInteret;
//not instanciated at launch
@FXML
private ChoiceBox<DureeChoiceBoxElement> duree;
/**
* Initializes the controller class. This method is automatically called
* after the fxml file has been loaded.
*/
@FXML
private void initialize() {
//fCalculInteret is NOT NULL, automatically instantiated at startup.
fCalculInteret.valueProperty().bindBidirectional(pel.fCalculInteretProperty());
//duree is NULL causing NullPointerException
duree.valueProperty().get().dureeProperty().bindBidirectional(pel.dureeProperty());
}
}
사용자 정의 유형 :
public class DureeChoiceBoxElement extends ObservableValueBase<DureeChoiceBoxElement> {
private IntegerProperty duree;
public DureeChoiceBoxElement() {
}
public DureeChoiceBoxElement(int duree) {
this.duree = new SimpleIntegerProperty(duree);
}
public IntegerProperty dureeProperty() {
return duree;
}
public Integer getDuree() {
return duree.getValue();
}
@Override
public DureeChoiceBoxElement getValue() {
// TODO Auto-generated method stub
return new DureeChoiceBoxElement(duree.get());
}
public void setDuree(Integer duree) {
this.duree.setValue(duree);
}
@Override
public String toString() {
return duree + " an";
}
}
당신은 왜이 NullPointer을 설명 할 수 있습니다. 감사합니다
널 (NULL) 포인터 변수에서 온다 : 개인] 선택 duree; '.Try가 제공하는 하나의 코드를 교체하고 작동하지 않는 경우에 오류 스택 트레이스를 추가, 나는'개인 IntegerProperty의 duree을 의미 프랑수아 F. @ 기타] 선택 –
같은 @FXML 주석을 넣어 반면 "duree은"NULL입니다 질문 : – GOXR3PLUS
duree ChoiceBox에 대한 나의 실수, FXML 파일에 문제가있다. 하지만 당신에게 대답하기 위해 bindDirectional을 설정했는지보십시오. 이런 식으로 또 다른 IntegerProperty가 private IntegerProperty duree와 비교하여 올바른 DureeChoiceBoxElement 항목을 선택할 수있게하고 싶습니다. 값. 나는이 방법을 시도하고있다. 감사. –