【问题标题】:JavaFX - What do I need to pass in the forTableColumn() for a CheckBoxTableCellJavaFX - 我需要在 forTableColumn() 中为 CheckBoxTableCell 传递什么
【发布时间】:2019-02-23 11:43:32
【问题描述】:

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

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

这是如何设置列的:

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 找到合适的方法(no 论据) 方法 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());行

【问题讨论】:

  • 请阅读 api 文档 ...归结为需要一个布尔列
  • @kleopatra 停止复制粘贴相同的回复到所有内容。如果它还不够最小、完整和可验证的示例,请转到另一个问题
  • @kleopatra 我读到了,但是我应该通过什么布尔列? usernameCol 和 permissionLevelCol 不需要传递列

标签: java javafx


【解决方案1】:

在第 56 行代码显示错误后尝试此操作。 ' giveRefundsCol.setSelected(true) '

它应该能够捕获为复选框制作的数据并将其设置为选中。

【讨论】:

  • TableColumn 没有 setSelected(true) 错误消息的方法 错误:(57, 23) java: 找不到符号 symbol: 方法 setSelected(boolean) 位置: javafx.scene 类型的变量 giveRefundsCol .control.TableColumn
【解决方案2】:

看来您只是传递了列本身。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-14
    • 2016-03-20
    • 1970-01-01
    • 2021-06-07
    • 2018-02-16
    • 2020-03-12
    • 2010-10-05
    • 1970-01-01
    相关资源
    最近更新 更多