Событие редактирования ячейки JXTable (редактирование запуска / остановки) - PullRequest
0 голосов
/ 11 октября 2018

У меня есть следующий код, которого я хотел добиться, чтобы позволить пользователям дважды щелкнуть ячейку в таблице, которая заполнена моделью, позволить пользователю редактировать определенную ячейку, нажать кнопку ввода и обновить эту информацию вячейка / модель.

Что я хочу:

  1. Дважды щелкните ячейку.
  2. В ячейке отображается текущее значение ячейки
  3. Пользователь изменяет значение и нажимает клавишу ввода
  4. Новое значение обновляется в табличной модели

Текущая проблема с кодом:текущий 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"){

        }
    }
}
...