私のプロジェクトでJavaFX、Hibernate、Springを使用しています。JavaFXコンボボックスがオブジェクトから正しい値を表示していません
そして、私はオブジェクト値でコンボボックスを塗りつぶす必要があります。 私のコンボボックスでは、私のモデルからタイトル値だけを表示する必要があります。
私のモデルクラス:私は読ん (約電池工場:コンボボックスは、このデータをいくつかの他の操作をするためにするためのいくつかのメソッドリスナーがあるpublic class Sector extends Identifier {
private String title;
private List<Stage> stageList;
public List<Stage> getStageList() {
return stageList;
}
public void setStageList(List<Stage> stageList) {
this.stageList = stageList;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Override
public String toString() {
return "Sector{" +
"id='" + getId() + '\'' +
"title='" + title + '\'' +
", stageList=" + stageList +
'}';
}
}
と私のコントローラで
public class Stage extends Identifier {
private String name;
private Station firstStation;
private Station secondStation;
private List<CommunicationDistance> communicationDistanceList;
public Stage() {
}
public Stage(String name, Station firstStation, Station secondStation) {
this.name = name;
this.firstStation = firstStation;
this.secondStation = secondStation;
}
public List<CommunicationDistance> getCommunicationDistanceList() {
return communicationDistanceList;
}
public void setCommunicationDistanceList(List<CommunicationDistance> communicationDistanceList) {
this.communicationDistanceList = communicationDistanceList;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Station getFirstStation() {
return firstStation;
}
public void setFirstStation(Station firstStation) {
this.firstStation = firstStation;
}
public Station getSecondStation() {
return secondStation;
}
public void setSecondStation(Station secondStation) {
this.secondStation = secondStation;
}
@Override
public String toString() {
return "Stage{" +
"id='" + getId() + '\'' +
"name='" + name + '\'' +
", firstStation=" + firstStation +
", secondStation=" + secondStation +
", communicationDistanceList=" + communicationDistanceList +
'}';
}
@FXML
public void currentSectorSelected(ActionEvent actionEvent) {
ObservableList<Stage> observableList = FXCollections.observableArrayList(((Sector) sector.getSelectionModel().getSelectedItem()).getStageList());
stage.setItems(observableList);
stage.getSelectionModel().selectFirst();
stage.setCellFactory(new Callback<ListView<Stage>, ListCell<Stage>>() {
@Override
public ListCell<Stage> call(ListView<Stage> param) {
return new ListCell<Stage>(){
@Override
public void updateItem(Stage item, boolean empty){
super.updateItem(item, empty);
if(!empty) {
setText(item.getName());
setGraphic(null);
} else {
setText(null);
}
}
};
}
});
}
すべてが働いているが、私のコンボボックス内の値は、これらのように示す:
これは、私の正しいオブジェクトですが、それでも私は私のセクターおよびその他のオブジェクトからのみタイトルフィールドを表示するために私のコンボボックスをフォーマットする方法を理解することはできません? コンボボックス出力をフォーマットするためのいくつかの有効な/正しい例を表示できますか?
編集1: 私のinitメソッドでは、私は単にコンボボックスに自分のオブジェクトのリストを追加しています。私はこれが正しい方法であることを確認していないが、私はコンボボックスの値を選択した後、このデータを検証したい場合は - 私は、コンボボックスに完全なオブジェクトを設定するには次の条件を満たす必要があります。
デバッグしましたか? setText(item.getName()); ここでは文字列が返され、コンボボックスは単純にその文字列を表示します。つまり、問題はコンボボックスにはありませんが、 "getName()"は間違った値を返します。 – DVarga
こんにちはDVarga。私の新しい編集を見てください。 –
あなたは正しいです。コンボボックスではなく、保存されたデータに問題がありました。 ItachiUchihaの変形とあなたのアドバイス - 私はこの問題を解決しました。ありがとう! –