JavaFX-我需要为CheckBoxTableCell传递forTableColumn()的内容

时间:2018-09-19 10:13:30

标签: java javafx

所以在我的代码中,我有一个包含多个可编辑列的表。

有些是文本,有些是下拉菜单,有些是选择框(是/否)

这是设置列的方法:

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"));

这适用于TextFieldTableCellChoiceBoxTableCell,但我不知道要为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());

2 个答案:

答案 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);
}