2016-07-05 5 views
0

У меня есть собственный класс таблицы, который расширяет JTable. Я хочу, чтобы столбец был видимым/невидимым на основе флажка. У меня есть actionlistener, который меняет максимальную, минимальную и предпочтительную ширину столбца в действии.JTable: изменение столбца на основе внешнего ввода

Если флажок НЕ установлен, то я устанавливаю минимальную/максимальную/предпочтительную ширину равным 0. Когда он выбран, я устанавливаю минимальную/максимальную/предпочтительную ширину в нормальный размер.

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

Я пробовал называть «table.repaint()», и это ничего не делало. Теперь мой идеальный подход состоит в том, чтобы просто выяснить, что вызвано во время изменения размера приложения/столбца, которое вызывает обновление, и просто вызвать его из моего слушателя.

+0

опубликуйте [mcve], чтобы мы могли понять, что вы сделали – c0der

+0

Вместо изменения * view * рассмотрите возможность внесения изменений в * Model * - вы могли бы сделать это, создав два TableModel, по одному для каждого типа, и измените JTable соответственно – copeg

+0

'Когда я изменяю размер приложения или любого из столбцов таблицы, таблица обновляется, и мой новый столбец теперь отображается правильно.' Вы должны позволить LayoutManager знать, что произошли изменения. попробуйте вызвать 'revalidate', но учтите альтернативу в моем комментарии выше – copeg

ответ

3

У меня есть элемент actionlistener, который меняет максимальную, минимальную и предпочтительную ширину столбца в действии.

Не играйте с размером столбца. Столбец по-прежнему будет частью таблицы и будет путать пользователя, когда они будут помещаться от столбца к столбцу, так как курсор исчезнет в свернутом столбце.

Вместо этого вы хотите удалить столбец из таблицы. Поэтому вам нужно удалить TableColumn из таблицы TableColumnModel.

Отъезд Table Column Manager. Это позволяет скрывать/показывать столбцы по мере необходимости.