2010-04-12 2 views
0

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

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

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

c 1 
b 2 
a 3 

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

a 3 
b 2 
c 1 

если изменить значение «1», после издания, таблица становится как этот

a 1 
b 2 
c 1 

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

ответ

2

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^