getCellEditorValue () из CellEditor. java вызывается только при нажатии на ячейку - PullRequest
0 голосов
/ 05 мая 2020

Рассмотрим следующую Jtable, а точнее первый столбец, в котором есть JComboBox:

введите описание изображения здесь

Когда я пытаюсь сохранить значение первого JComboBox (тот, который имеет значение «auth2» в качестве значения), не щелкая его сначала, когда я проверяю базу данных, я нахожу пустую строку.

Однако, когда я сначала нажимаю на него, а затем сохраняю, я получаю правильное значение, сохраненное в базе данных.

Используя отладчик, я обнаружил, что метод getCellEditorValue() of CellEditor.java вызывается только тогда, когда вы сначала нажимаете на сам JComboBox.

Это объясняет, почему в базе данных я получаю правильное значение, когда сначала нажимаю на JComboBox, а когда я не нажимаю на него, я получаю пустая строка.

Итак, мой вопрос: есть ли способ вызывать метод getCellEditorValue() каждый раз, когда я сохраняю, независимо от того, нажимаю ли я на JComboBox?

Спасибо

1 Ответ

1 голос
/ 05 мая 2020

Я получаю правильное значение, когда сначала нажимаю на JComboBox, а когда я не нажимаю на него, я получаю пустую строку.

Вы НЕ должны пытаться получить доступ к значение из поля со списком. Поле со списком используется как редактор для всех строк в таблице.

есть ли способ вызывать метод getCellEditorValue () каждый раз, когда я сохраняю

Данные хранятся в TableModel, а не в поле со списком.

Вы можете использовать метод getValueAt(…) из JTable или TableModel в любое время, чтобы получить значение из модели.

Примечание: это возможно (в зависимости от того, что вы делаем), что данные не были сохранены из редактора в TableModel. Если это так, проверьте: Редактирование ячеек остановки JTable без щелчка пользователем для решения.

...