所以在我的代码中,我有一个包含多个可编辑列的表。
有些是文本,有些是下拉菜单,有些是选择框(是/否)
这是设置列的方法:
usernameCol.setCellFactory(TextFieldTableCell.forTableColumn());
usernameCol.setCellValueFactory(new PropertyValueFactory<User,String>("username"));
permissionLevelCol.setCellFactory(ChoiceBoxTableCell.forTableColumn(/* this is a String[]*/usersManager.getPermissionNamesList()));
permissionLevelCol.setCellValueFactory(new PropertyValueFactory<User,String>("permissionLevel"));
giveRefundsCol.setCellFactory(CheckBoxTableCell.forTableColumn());
giveRefundsCol.setCellValueFactory(new PropertyValueFactory<PermissionLevel, CheckBoxTableCell>("giveRefunds"));
这适用于TextFieldTableCell
和ChoiceBoxTableCell
,但我不知道要为ChoiceBoxTableCell
放置什么-它需要CheckBoxTableCell.forTableColumn()
错误消息:
错误:(56,56)Java:找不到适用于forTableColumn的方法(否 参数) 方法javafx.scene.control.cell.CheckBoxTableCell.forTableColumn(javafx.scene.control.TableColumn)不适用 (无法推断类型变量S (实际和正式参数列表的长度不同) 方法javafx.scene.control.cell.CheckBoxTableCell.forTableColumn(javafx.util.Callback>) 不适用 (无法推断类型变量S,T (实际和正式参数列表的长度不同) 方法javafx.scene.control.cell.CheckBoxTableCell.forTableColumn(javafx.util.Callback>,boolean) 不适用 (无法推断类型变量S,T (实际和正式参数列表的长度不同) 方法javafx.scene.control.cell.CheckBoxTableCell.forTableColumn(javafx.util.Callback>,javafx.util.StringConverter) 不适用 (无法推断类型变量S,T (实际和正式论点列表的长度不同)
ps:错误消息中的第56行是giveRefundsCol.setCellFactory(CheckBoxTableCell.forTableColumn());
行
答案 0 :(得分:0)
在第56行代码显示错误后尝试执行此操作。 'GiveRefundsCol.setSelected(true)'
它应该能够捕获为复选框创建的数据并将其设置为选中状态。
答案 1 :(得分:0)
似乎您只是在传递列本身。
giveRefundsCol.setCellFactory(CheckBoxTableCell.forTableColumn(giveRefundsCol));
有趣的是,它没有在Oracle源代码中使用,您只需传递null即可。
public static <S> Callback<TableColumn<S,Boolean>, TableCell<S,Boolean>> forTableColumn(
final TableColumn<S, Boolean> column) {
return forTableColumn(null, null);
}