Combobox JavaFX 8如何传递和使用对不';不返回值吗?
我试图传递并使用一个方法引用到另一个方法。该引用指向TableView模型类中的setter,该setter接受字符串输入参数而不返回值 在我的FMXL控制器中,我动态地创建包含组合框的表列。代码基于James_D的解决方案:。我通过方法参考,如下所示: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",
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);
...
}