У меня есть ComboBox в javafx, который использует объект степени в качестве своих значений.С другой стороны, у меня есть TableView с объектом Thesis в качестве его значений, у которого есть прослушиватель, который возвращает строку степеньName при щелчке по этой строке.Как я могу использовать это «градусное имя», которое я извлек из таблицы, в качестве средства выбора значения из ComboBox с тем же значением degName?
Я использую объект степени в качестве значений в моем ComboBox, потому что я хочу получить всеатрибуты из этого значения, когда я использую его в своей программе.
До сих пор я уже генерировал ComboBox с этим кодом:
private void set_degreeCombo() throws SQLException
{
ObservableList<Degree> degreeList = DegreeDAO.init_degreeData();
thesisDegreeCB.setCellFactory(
(cb) -> new ListCell<Degree>(){
@Override
protected void updateItem(Degree item, boolean empty)
{
super.updateItem(item, empty);
if(item == null || empty)
setText(null);
else
setText(item.getDegree());
}
}
);
thesisDegreeCB.setConverter(
new StringConverter<Degree>() {
@Override
public String toString(Degree degree) {
return (degree == null) ? null : degree.getDegree();
}
@Override
public Degree fromString(String degreeString) {
return null;
}
}
);
thesisDegreeCB.setItems(degreeList);
thesisDegreeCB.getSelectionModel().select(0);
}
И у меня есть слушатель в моем TableView:
thesisIDCol.setCellValueFactory(data -> data.getValue().idProperty().asObject());
thesisTitleCol.setCellValueFactory(data -> data.getValue().titleProperty());
thesisYearCol.setCellValueFactory(data -> data.getValue().yearProperty());
thesisTbl.getSelectionModel().selectedItemProperty().addListener(
(observable, oldVal, newVal) ->
{
if(newVal != null)
{
if(newVal.getId() != 0)
{
thesis = newVal;
try {
generateThesisData();
} catch (SQLException e) {
e.printStackTrace();
}
} else {
System.out.println("Adding New Data.");
clearThesisData();
}
} else
clearThesisData();
}
);
Я хочу, чтобы, когда я вызываю generateThesisData (), я хотел выбрать ComboBox с тем же степеньюимением, что и degName в моей таблице.
Пока я использую только этот код:
thesisDegreeCB.getSelectionModel().select(thesis.getDegreeID() - 1);
и получаю его индексное значение, что ненадежно, поскольку у меня есть возможность удалить данные из таблицы степеней.
Я надеюсь, что кто-нибудь может мне помочь с этим.Большое спасибо и хорошего дня.