> I found out if you editing a JTable cell without hit
> the Enter or Tab key. Then the new cell value won't take
> effect. For example, a table cell value is "abc" and
> you change it to "xyz".
The problem is, that in this case the cell editor's stopCellEditing()
method is not called. See also the API doc of CellEditor#stopCellEditing()
> Then when you read that table
> cell value, it still "abc". You MUST hit the Enter or
> Tab key, then you will get that table cell value as "xyz".
>
> How can I force that table cell value as "xyz" WITHOUT
> hit the Enter or Tab key?
You have to call your cell editor's stopCellEditing() method at appropriate
times (probably when the cell looses keyboard focus):
JTable yourTable = ...;
if (yourTable.isEditing())
yourTable.getCellEditor().stopCellEditing();
Or simpler: somewhere at the beginning you tell your JTable to do those
stopCellEditing calls automatically for you:
yourTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

Signature
Thomas
Steve W. Jackson - 24 May 2007 22:04 GMT
> > I found out if you editing a JTable cell without hit
> > the Enter or Tab key. Then the new cell value won't take
[quoted text clipped - 18 lines]
> stopCellEditing calls automatically for you:
> yourTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
I'm pretty sure that the default behavior does this already (though I
could be mistaken). The OP's description sounds like he's trying to do
it without a focus change or edit completion event. Or maybe he's
expecting the edit to get accepted when closing the containing dialog or
frame, which does not happen. The default behavior there is to cancel
the edit and discard it.
= Steve =

Signature
Steve W. Jackson
Montgomery, Alabama
Richard Reynolds - 26 May 2007 13:26 GMT
>> > I found out if you editing a JTable cell without hit
>> > the Enter or Tab key. Then the new cell value won't take
[quoted text clipped - 29 lines]
>
> = Steve =
Maybe he could write a CaretListener and update the value each time the
cell's field is updated? I vaguely remember having to do something like
this, I think JFormattedTextFields were involved too.