从代码请求开始编辑 TreeTableCell
Start editing a TreeTableCell from a code request
我有一个运行良好的 TreeTableView。我已经实现了单击 "TreeTableCell" 时出现的上下文菜单。在我的上下文菜单中,我有一个名为 "edit" 的 MenuItem,当它被选中时,我想让当前的 TreeTableCell 开始编辑。不幸的是,我不知道如何正确开始编辑单元格。
我最初的想法是,由于上下文菜单回调在我的 TreeTableCell 实例的范围内,我会调用我的单元格的 "startEdit" 方法。这似乎有效……但是,当 commitEdit 发生时,我在 JavaFX 的内部深处得到了一个 NullPointerException。这让我认为显式调用 startEdit() 是错误的想法,应该有一种正确的方法来使 table 中的特定单元格开始其编辑周期。
经过低层次的学习,我找到了答案。我曾假设我可以针对我的 TreeTableCell
调用 startEdit()
然而那是 而不是 将 table 单元格标记为进入编辑模式的正确方法.
相反,TableView 和 TreeTableView 都公开了一个采用两个参数的 edit()
方法:
- 从0
开始索引的table的行号
- table
的TableColumn
行和列的组合提供了单元格在 table 中的唯一位置。调用 edit()
会将单元格置于编辑模式。
这是 TableView 编辑方法的 JavaDoc:
我有一个运行良好的 TreeTableView。我已经实现了单击 "TreeTableCell" 时出现的上下文菜单。在我的上下文菜单中,我有一个名为 "edit" 的 MenuItem,当它被选中时,我想让当前的 TreeTableCell 开始编辑。不幸的是,我不知道如何正确开始编辑单元格。
我最初的想法是,由于上下文菜单回调在我的 TreeTableCell 实例的范围内,我会调用我的单元格的 "startEdit" 方法。这似乎有效……但是,当 commitEdit 发生时,我在 JavaFX 的内部深处得到了一个 NullPointerException。这让我认为显式调用 startEdit() 是错误的想法,应该有一种正确的方法来使 table 中的特定单元格开始其编辑周期。
经过低层次的学习,我找到了答案。我曾假设我可以针对我的 TreeTableCell
调用 startEdit()
然而那是 而不是 将 table 单元格标记为进入编辑模式的正确方法.
相反,TableView 和 TreeTableView 都公开了一个采用两个参数的 edit()
方法:
- 从0 开始索引的table的行号
- table 的TableColumn
行和列的组合提供了单元格在 table 中的唯一位置。调用 edit()
会将单元格置于编辑模式。
这是 TableView 编辑方法的 JavaDoc: