![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 2 Всего: 17 |
Вечер добрый.
Есть JTable. Время от времени в ее модели происходит полная смена данных. При этом хорошо бы пересчитать и настроить ширины колонок. Делать это я умею, но есть одно большое НО. Посадил обработчика на события модели и поставил вот такую обработку:
Все было бы нормально, если бы не одно но: модель уже поменялась, а вот таблица поменялась частично: число строк уже новое, а число столбцов еще старое. До данных через модель добраться конечно можно, а вот не созданные столбцы настроить не получается. Как получить событие когда JTable уже обработала смену модели? -------------------- Mirkes |
|||
|
||||
| Mirkes |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 2 Всего: 17 |
Немного поэкспериментировал.
После вызова события смены модели, послал вдогонку событие с собственным кодом события (-5).
При обработке события число столбцов и строк в JTable было правильным (соответствовало модели). На радостях перенастроил ширину всех колонок - на экране никакого результата. Начал устанавливать все ширины, какие только мог (data - JTable):
В консоли вижу изменение ширины колонок, на экране - нет. Добавил на всякий случай revalidate и repaint - никакого эффекта. Посадил слушателя на изменение параметров колонки. После чего начал мышкой менять ширину колонок - никакого отклика. Такое впечатление, что после всех моих настроек JTable просто удалила все колонки и создала их по новой. После чего все мои настройки естественно испарились. Вопрос, как поймать момент, когда JTable наконец сформировала все колонки, что бы настроить их ширину? -------------------- Mirkes |
||||
|
|||||
| Mirkes |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 2 Всего: 17 |
Таки удалось найти решение.
Следующий код дает нормальный результат: После всех операций по смене модели из нее (модели) вызываем два события:
Первое вызывает полную смену всех столбцов и прочей внутренней лабуды JTable. Второе вызывает в JTable перерисовку 0-го столбца 0-й строки. Код -5 JTable просто игнорирует (я надеялся сначала, что JTable увидев странный код просто не станет его обрабатывать, но команда "Обломись" JTable все, что не есть -1 (Delete) или 1 (Add) считает за 0 (Update). В основной программе нужно повесить слушателя событий модели. Так случилось, что в моей программе JTable зовут data.
maxWidth - максимально допустимая ширина столбца. После чего следующий метод прекрасно устанавливает ширину столбца, подогнанную под содержимое таблицы
Собственно и все. -------------------- Mirkes |
||||||
|
|||||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |