JavaFXアプリケーションをコーディングしています。私はSceneBuilder 8.2でGUIを作成しました。 私は既にChoiceBoxをいくつか入れましたが、カスタムTypeではなくJava Typeを使用しました。 それはうまく動作します。 しかし、カスタム型では、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ポインタは変数から来ている:プライベートChoiceBox duree。 "duree"はNULLですが、私は他のChoiceBoxのように@FXML注釈を入れます –
@FrançoisF.私は 'private IntegerProperty duree;'を意味します。コードを指定されたものに置き換えてみて、それが動作しない場合はエラースタックトレースを追加してください質問: – GOXR3PLUS
duree ChoiceBoxの私の間違いは、問題はFXMLファイルであった。しかし、あなたに答えるために、bindDirectionalを設定してください。このようにして、別のIntegerPropertyがプライベートIntegerProperty dureeと比較して正しいDureeChoiceBoxElement項目を選択できるようにしたいと思います。値。私はこのようにしています。ありがとう。 –