У меня есть следующий код, которого я хотел добиться, чтобы позволить пользователям дважды щелкнуть ячейку в таблице, которая заполнена моделью, позволить пользователю редактировать определенную ячейку, нажать кнопку ввода и обновить эту информацию вячейка / модель.
Что я хочу:
- Дважды щелкните ячейку.
- В ячейке отображается текущее значение ячейки
- Пользователь изменяет значение и нажимает клавишу ввода
- Новое значение обновляется в табличной модели
Текущая проблема с кодом:текущий CValidatingTextField при двойном щелчке по ячейке не показывает значение выбранной ячейки.И если бы я должен был ввести значение «123» в ячейку широты строки 1, если бы я выбрал ячейку широты строки 2 или 3, в текстовом поле также будет показано значение 123.
Вопрос: есть ли способизменить этот код для достижения того, что я хочу?Или есть более простой способ обнаружения события редактирования ячейки?Я видел пример set / getValueAt, но я не уверен, как включить это в мой код для достижения того, чего я хочу.Это звучит как простая проблема, но я не уверен, как ее решить.
private void setPointTableCellEditors(){
JXTable pTable = pointTableModelHandler.getGenericTablePanel().getGenericTable();
int colCount = pTable.getColumnModel().getColumnCount();
for (int i = 0; i < colCount; ++i){
TableColumn col = pTable.getColumnModel().getColumn(i);
String headerText = col.getHeaderValue().toString();
if (headerText.equalsIgnoreCase("latitude"){
final CValidatingTextField latTextField = new CValidatingTextField();
latTextField.addValidators(new NumericValidator<>(0, Integer.MAX_VALUE, 0, Integer.class));
DefaultCellEditor defaultCellEditor2 = new DefaultCellEditor(latTextField);
col.setDefaultCellEditor(defaultCellEditor2);
defaultCellEditor2.addCellEditorListener(new CellEditorListener(){
@Override
public void editingStopped(ChangeEvent e){
String latInput = latTextField.getText();
//From here i can do whatever i wish with the new value
}
@Override
public void editingCanceled(ChangeEvent e){
}
}
}else if(headerText.equalsIgnoreCase("longitude"){
}
}
}