We currently have a focus problem with a JTable
/JTextEditor
in java swing. The JTable
has a custom cell editor which is a JTextField
.
The issue is when a cell is being edited and contains invalid data, and the user clicks on a JButton
, the text field will stop editing and the JButton
actionPerformed (clicked) is called. The JTable#setValueAt
handles validation so if the data in the JTextField
is invalid, the underlying TableModel
is not updated.
Ideally, we do not want to let the JButton
click occur. Focus should remain with the JTable
or the JTextField
.
Clicking the button will perform a submit action and close the frame the table is in. As the validation in the TableModel#setValueAt
does not update the value, it submits the old value.
Can this be done? I am still fairly new to Swing so I am not aware what to check.
Unfortunately, our code is not straight forward. The UI is constructed from XML in such a way that the button knows nothing about anything else on a form (this is code I have inherited).
In .net you could stop a control losing focus by handling a Validating event and setting a cancel flag. Is there a similar mechanism with Java.