我已经创建了一个方法来填充符合正确标准的对象的列表视图:
public void setCourseModules(Collection<Module> modules) {
t1UnSel.getItems().clear();
t2UnSel.getItems().clear();
t1Sel.getItems().clear();
t2Sel.getItems().clear();
yrSel.getItems().clear();
modules.forEach(m -> {
if (m.getRunPlan().equals(Delivery.TERM_1)) {
if (m.isMandatory()) {
t1Sel.getItems().add(m);
} else {
t1UnSel.getItems().add(m);
}
} else if (m.getRunPlan().equals(Delivery.TERM_2)) {
if (m.isMandatory()) {
t2Sel.getItems().add(m);
} else {
t2UnSel.getItems().add(m);
}
} else {
yrSel.getItems().add(m);
}
});
}
并将其命名为:
smp.setCourseModules(course[0].getModulesOnCourse());
然而,这只是从数组中获取第一个课程的硬编码条目,我需要能够根据组合框选择动态更改该索引,努力思考如何将课程名称的索引作为没有硬编码的int ......
附件是要点,Student Setup类和Controller是最重要的,包含comboBox和Controller的Student类具有课程数据声明。
答案 0 :(得分:1)
只是为了延长M. le Rutte的回答
您可以使用
myComboBox.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observable, Object oldValue, Object newValue) {
//do something with selected item
}
});
或
myComboBox.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
//do something with selected index
}
});
答案 1 :(得分:0)
我对您的问题的看法是您需要获取所选的组合框值。 ComboBox具有value
属性:
public ObjectProperty<T> valueProperty();
如果是,则将此ComboBox的值定义为所选项 输入不可编辑,或者如果可编辑,则为最新用户 action:用户输入的值或最后选择的项目。