#java #swing #jtable
#java #качать #jtable
Вопрос:
Я использую JTable для отображения информации. После рендеринга информации, если я перетаскиваю столбцы, чтобы изменить их порядок, информация отображается таким же образом в сеансе. Но когда я пытаюсь зафиксировать изменения, проверяя имена столбцов путем повторения имен столбцов, последовательность такая же, как и у более старой. Почему последнее представление недоступно из API?
Комментарии:
1. Представление и модель полностью различны. Изменение порядка столбцов не должно влиять на модель.
Ответ №1:
Как прокомментировал Hovercraft Full Of Eels, индексы столбцов в представлении изменяются независимо от индексов столбцов в модели. JTable
JavaDoc имеет это, чтобы сказать об этом:
По умолчанию столбцы могут быть переставлены
JTable
так, чтобы столбцы представления отображались в порядке, отличном от столбцов в модели. Это вообще не влияет на реализацию модели: когда столбцы переупорядочиваются,JTable
поддерживается новый порядок столбцов внутри и преобразуются индексы столбцов перед запросом модели.
JTable
предлагает методы convertColumnIndexToModel()
и convertColumnIndexToView()
которые вы можете использовать для перевода номеров столбцов из одного в другой. Вы можете использовать их, чтобы выяснить, были ли (и как) переставлены столбцы.
Чтобы получать уведомления об изменениях столбцов по мере их возникновения, используйте TableColumnModelListener
:
myTable.getColumnModel().addColumnModelListener( new TableColumnModelListener() {
//etc.
} );
Комментарии:
1. Есть ли в JDK 1.5 какой-либо способ применить изменения из представления к модели?
2. Поддержка преобразования индексов столбцов существует уже давно. В JDK6 добавлена поддержка преобразования индексов строк, поскольку добавлена поддержка сортировки / фильтрации.