LINUX.ORG.RU

[java][swing] Проверка наличия изменений

 ,


0

0

Для проверки наличия изменений перед сохранением данных из JTable использую .isEditing(), проблема в том, что если пользователь после ввода нажмет enter или щелкнет на любую другую ячейку (так, что ячейка станет выбранной, но без курсора в ней) то isEditing вернет false и соответственно ничего не сохраниться. Выходом из ситуации мне видится либо написание собственного велосипеда для проверки наличия изменений, либо надо сделать JTable всегда редактируемым, то есть сделать так, что бы ячейку нельзя было подсветить без установки курсора в ней. Вот что накопал на эту тему:

// Нажатие Enter вызывает редактирование ячейки
jTable1.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "key-enter");
        jTable1.getActionMap().put("key-enter", new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int row = jTable1.getSelectedRow();
                int col = jTable1.getSelectedColumn();
                if (jTable1.isCellEditable(row, col)) {
                    jTable1.editCellAt(row, col);
                }
            }
        });

// Одинарный клик по ячейке вызывает ее редактирование
((DefaultCellEditor) jTable1.getDefaultEditor(String.class)).setClickCountToStart(1);
Как поступить, писать дальше костыли на поведение клавиш стрелок итд итп, писать собственный влосипед проверки или есть более рациональный путь?


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.