Таблица JTable, заполненная данными базы данных, не обновляется при переупорядочении столбцов - PullRequest
0 голосов
/ 12 апреля 2010

У меня есть JTable, заполненный данными таблицы моей базы данных (поэтому я использовал ResultSetTableModel) и использующий TableRowSorter для сортировки строк, когда я щелкаю в одном столбце JTable. Данные отображаются в jTable без проблем;

Но когда я сортирую JTable по некоторой таблице столбцов (например, сортирую ее по значению первичного ключа) и редактирую некоторую ячейку из отсортированного jTable, изменяемое значение - это старая ячейка, которая была в этой позиции до выделения. колонны.

Например: Предположим, у меня есть таблица с 2 столбцами - name и age . Моя таблица содержит следующие данные:

c 1
b 2
a 3

когда я заказываю i по имени в JTable, он становится таким

a 3
b 2
c 1

если я отредактирую значение "1", после издания таблица станет такой

a 1
b 2
c 1

Кажется, что позиции в JTable не обновляются, а значения редактируются с учетом их исходных позиций.

1 Ответ

2 голосов
/ 29 апреля 2010

Во-первых, обратите внимание, что данные фактически содержатся в модели, а jtable - это просто представление. Обычно по умолчанию строки и столбцы jtable соответствуют строкам и столбцам таблицы. Когда вы сортируете, это отображение между строкой jtable, col может не остаться прежним, поэтому, когда вы хотите редактировать скажем ячейку (rowVal, colVal), делать

table.setValueAt(object,table.convertRowIndexToModel(rowVal),convertColumnIndexToModel(colVal))

это должно сохранить отображение после сортировки. Прочитайте раздел Сортировка и фильтрация здесь: http://java.sun.com/docs/books/tutorial/uiswing/components/table.html

...