从javafx中的数据模型动态填充ListView

时间:2018-04-29 07:24:00

标签: java listview javafx arraylist model-view-controller

我已经创建了一个方法来填充符合正确标准的对象的列表视图:

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类具有课程数据声明。

2 个答案:

答案 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:用户输入的值或最后选择的项目。