删除行时单元格编辑器不退出

发布于 2024-12-06 22:42:36 字数 621 浏览 3 评论 0原文

我有一个包含几列的 JTable,其中一列有一个自定义渲染器,用于在 JPanel 中显示 3 个按钮,以及一个自定义编辑器,以允许它们可单击。其中一个按钮向我们的服务器发送该行 ID 的删除命令,然后通过清除数据模型并再次加载数据来从服务器重新加载表数据。发生这种情况时,带有 3 个按钮的单元格将继续显示(但不会显示该行的其余部分),直到我单击另一行中的另一个按钮,即使该行已消失。

我已设置 putClientProperty("terminateEditOnFocusLost", Boolean.TRUE) 但将焦点更改为另一个组件并没有帮助。

我尝试在刷新数据之前删除行本身(甚至删除所有行),并确保调用 fireTableRowsDeleted()

我还尝试调用 TableCellEditorcancelCellEditing()stopCellEditing() 函数,甚至手动将编辑行/列设置为另一个细胞。

任何帮助将不胜感激。


好的,所以我想通了。我最终在桌子上调用了 removeEditor() 并修复了它。

感谢您的回复。

I have a JTable with a several columns, one of which is has a custom renderer to display 3 buttons in a JPanel as well as a custom editor to allow them to be clickable. One of the buttons sends a delete command to our server for that row id then reloads the table data from the server by clearing the data model and loading data again. When this happens the cell with the 3 buttons continues to display (but not the rest of the row) until I click another button in another row even though the row is gone.

I've set putClientProperty("terminateEditOnFocusLost", Boolean.TRUE) but changing focus to another component does not help.

I've tried deleting the row itself before refreshing the data (even deleted all the rows) and made sure to call fireTableRowsDeleted().

I've also tried calling the cancelCellEditing() and stopCellEditing() functions of the TableCellEditor and even manually setting the editing row/column to another cell.

Any help would be greatly appreciated.


Ok, so I figured it out. I ended up calling removeEditor() on the table and that fixed it.

Thanks for the responses.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不寐倦长更 2024-12-13 22:42:36

我已设置 putClientProperty("terminateEditOnFocusLost", Boolean.TRUE),但将焦点更改为另一个组件并没有帮助。

该方法应该在创建表时调用,而不是在单击按钮时在 actionPerformed 方法中调用。

I've set putClientProperty("terminateEditOnFocusLost", Boolean.TRUE) but changing focus to another component does not help.

That method should be invoked when you create the table, not in the actionPerformed method when you click the button.

幸福丶如此 2024-12-13 22:42:36

好的,所以我想通了。我最终在数据刷新之前在表上调用了removeEditor()并修复了它。

感谢您的回复。

Ok, so I figured it out. I ended up calling removeEditor() on the table just before the data refresh and that fixed it.

Thanks for the responses.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文