如何强制jtable中的单元格编辑器接受编辑

时间:2011-06-24 18:53:06

标签: java jtable

我有一个包含多个可编辑单元格的jtable

当有人按下菜单上的“保存按钮”时,它不会保存当前仍在编辑的最后一个值。 (除非他们先从单元格中删除)

我可以通过调用返回true的.isEditing()来检查它是否正在编辑。

我更喜欢的是触发单元格编辑完成,它可以显示任何验证错误,如果没有,则保存。 (没有用户必须首先标出)

有人可以指出我正确的方向吗

感谢

3 个答案:

答案 0 :(得分:6)

您可以手动拨打:

JTable table;
table.getCellEditor().stopCellEditing();

这会导致表停止在该单元格进行编辑。通过覆盖stopCellEditing()的{​​{1}}方法并在某些情况下返回false,您可以指示单元格的值当前无效,因此此时无法停止编辑。

答案 1 :(得分:6)

当你有一个包含多个可编辑单元格的jtable时

当有人按下菜单上的“保存按钮”时,它不保存最后一个值,请添加下面的代码和平

首先是让表自动停止编辑并保存数据。这可以通过在表上设置属性来完成:

JTable table = new JTable(...);
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

当有人按下菜单上的任何按钮时,它会确保保存最后编辑的值。

答案 2 :(得分:1)

如果我没记错的话,编辑/添加的值默认存在于单元格编辑器组件中,它是EditBox,但是不存在于表模型中。如果可以尝试检查单元格编辑器组件,它应该可以帮助您。