У меня есть JTable, чьи ячейки редактор является JTextField, я ссылаться focuslost на celleditor , код которогоДинамически изменить значение JTable ячейки в центре внимания потерял
public void focusLost(FocusEvent e)
{
JTextField textField = new JTextField();
textField = (JTextField) e.getSource();
textField.setText(getCurrencyEquivalent(textField.getText()));//read P.S
table.setValueAt(textField.getText(), table.getEditingRow(), 0);
}
Я получаю следующее исключение:
java.lang.ArrayIndexOutOfBoundsException: -1
Когда я отлаживал, было ясно, что focuslost запускается на cellEditor после того, как фокус фактически потерян из ячейки JTable. Что делает table.getEditingRow() всегда возвращать -1, поэтому невозможно динамически устанавливать значения в focuslost. Помогите мне решить это с помощью любой другой техники, если она доступна.
P.S: getCurrencyEquivalent() - метод, который возвращает форматированную версию данной строки в другом формате String.
Почему вы пытаетесь это сделать? 'JTable' API /' CellEditor' должен заботиться об этом для вас, вы должны либо вызывать 'stopCellEditing', либо' cancelCellEditing' – MadProgrammer