Combobox JavaFX 8如何传递和使用对不';不返回值吗?

Combobox JavaFX 8如何传递和使用对不';不返回值吗?,combobox,tableview,javafx-8,fxml,Combobox,Tableview,Javafx 8,Fxml,我试图传递并使用一个方法引用到另一个方法。该引用指向TableView模型类中的setter,该setter接受字符串输入参数而不返回值 在我的FMXL控制器中,我动态地创建包含组合框的表列。代码基于James_D的解决方案:。我通过方法参考,如下所示: TableColumn<TestModel, DBComboChoice> colComboBoxField = DAOGenUtil.createComboBoxColumn ("ComboBox Field",

我试图传递并使用一个方法引用到另一个方法。该引用指向TableView模型类中的setter,该setter接受字符串输入参数而不返回值

在我的FMXL控制器中,我动态地创建包含组合框的表列。代码基于James_D的解决方案:。我通过方法参考,如下所示:

TableColumn<TestModel, DBComboChoice> colComboBoxField = DAOGenUtil.createComboBoxColumn
        ("ComboBox Field",
        TestModel::comboBoxFieldProperty, //this one works
        TestModel::setComboBoxField, //this one doesn't work
        comboData);

让我们看看可用的签名:

void setComboBoxField(String)
由于您不希望指定实例,而是使用
TestModel::setcomboxfield
,因此需要一个函数接口,该接口的方法接受两个参数:
TestModel
String
。您可以自己轻松创建这样的接口

@FunctionalInterface
public interface MyInterface<S, T> {
    void call(S s, T t);
}
void setComboBoxField(String)
@FunctionalInterface
public interface MyInterface<S, T> {
    void call(S s, T t);
}
public <S> TableColumn<S, DBComboChoice> createComboBoxColumn(String title, 
        Function<S, StringProperty> methodGetComboFieldProperty, 
        MyInterface<? super S, ? super String> methodSetComboField,
        ObservableList<DBComboChoice> comboData )
public <S> TableColumn<S, DBComboChoice> createComboBoxColumn(String title, 
        Function<S, StringProperty> methodGetComboFieldProperty, 
        BiConsumer<? super S, ? super String> methodSetComboField,
        ObservableList<DBComboChoice> comboData ) {
    ...
    methodSetComboField.accept(col.getTableView().getItems().get(cell.getIndex()), masterCode);
    ...
}