在javafx中从数据模型动态填充ListView
我创建了一个方法,用符合正确条件的对象填充ListView:在javafx中从数据模型动态填充ListView,java,listview,javafx,arraylist,model-view-controller,Java,Listview,Javafx,Arraylist,Model View Controller,我创建了一个方法,用符合正确条件的对象填充ListView: public void setCourseModules(Collection<Module> modules) { t1UnSel.getItems().clear(); t2UnSel.getItems().clear(); t1Sel.getItems().clear(); t2Sel.getItems().clear(); yrSel.getItems().clear();
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);
}
});
}
然而,这只是一个硬编码的条目,要从数组中获取第一个课程,我需要能够根据组合框选择动态更改该索引,努力思考如何在不硬编码的情况下将课程名称的索引获取为int
附件是要点,学生设置类和控制器是最重要的,包含组合框和控制器的学生类具有课程数据声明。我对您的问题的看法是,您需要获取所选组合框值。ComboBox具有值属性:
public ObjectProperty<T> valueProperty();
如果
输入不可编辑,如果可编辑,则为最近的用户
操作:用户输入的值或最后选定的项目
我只是想扩大他的回答
你可以用
myComboBox.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observable, Object oldValue, Object newValue) {
//do something with selected item
}
});
或
那有帮助!虽然我没有得到该值,但我创建了一个方法来获取所选索引,并将该方法放入setCourseModules方法中。不过你肯定让我走上了正轨,谢谢!我做了一个类似的public int getcboValue{int index=cboCourse.getSelectionModel.getSelectedIndex;return index;}并在课程[x]中调用它,它似乎有效,它与您的建议相比如何?区别在于您的代码只有在您在代码中调用它时才会返回一个值,每次您在UI中的复选框中选择一个值时,我的方法将触发放置在已更改方法中的操作
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
}
});