1

我有一个 JXTable,用户需要在其中引入数据,然后保存。唯一的问题是,用户必须在保存之前取消选择最后编辑的单元格。如果他们不这样做,则不会保存该单元格的数据。

我唯一想到的就是在保存之前自动更改当前选择。这是我尝试过的:

table.getSelectionModel().setSelectionInterval(0, 0);
table.getColumnModel().getSelectionModel().setSelectionInterval(0, 0);

或者

table.getSelectionModel().setLeadSelectionIndex(0);
table.getColumnModel().getSelectionModel().setLeadSelectionIndex(0);

两者似乎都不起作用,但这是我发现的唯一两种方法。

谁能告诉我如何正确执行此操作或提出替代方案以让它保存最后一个单元格中的数据?

4

1 回答 1

1

我假设用户在JButton希望保存数据时单击了另一个组件 ( )。如果您有JXTable对该事件发生时间的引用,则可以在其中添加以下代码:

if (table.isEditing()) {
    table.getCellEditor().stopCellEditing();
}

应该保存模型的stopCellEditing()状态并允许您保存所有内容,包括当前选择/编辑的单元格。


编辑:正如kleopatra指出的那样,处理此问题的默认(更好!)方法是通过 JTable 组件的 client 属性:

table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

因为JXTable这应该已经设置,这表明您的 UI 处理保存功能的方式不包括将焦点从表格移开。所以本质上,当你的“保存”事件被触发时,你最好改变焦点。

于 2012-12-03T15:56:38.097 回答