java - 从javafx中的数据模型动态填充ListView
问题描述
我创建了一种方法来用符合正确条件的对象填充列表视图:
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类有课程数据声明。
解决方案
只是为了扩展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
}
});
推荐阅读
- apache-kafka - 如何在 DLQ 中自定义标头消息异常
- c# - 在 C# asp.net 中按相同顺序对列表中的相似项进行分组
- javascript - 是否有可能在 shadow dom 中使用 twitter bootstrap 的 css 类?
- caching - 我们什么时候执行缓存失效?
- sql-server - 如果我进行事务日志备份并截断日志文件,我会丢失数据吗?
- java - Java 程序无法执行它写入 /tmp 的文件,没有这样的文件或目录
- flutter - 在按钮上单击导航到选项卡屏幕
- java - 将空字段反序列化为 null 而不是采用默认值
- android - Xamarin App Android 上的输入调度超时错误
- reactjs - 当我调用 DrawerOpen 时,抽屉不会打开到 initialRouteName