Я создаю пользовательский компонент Swing (больше как практический мысленный эксперимент, чем что-либо еще).
У меня проблемы с перерисовкой.У моего компонента есть jtree
, jtable
, а затем часть, полностью окрашенная по своему усмотрению (надеюсь, в конечном итоге она станет вполне подходящей для MS Project Ganttview)
Особая проблема заключается в том, что при расширении jtreeтаблица и представление gannt должны обновиться, чтобы отразить новые подпроекты в рамках недавно расширенного триода.Они делают это, но размер не обновляется, поэтому в таблице не отображаются дополнительные строки, и мой дисплей также не использует всю высоту.
странно то, что если я коснусь дескриптора окна на jframe
(таким образом, даже изменение размера на 1 пиксель) - это, кажется, вызывает полное обновление, и компонент затем отображается правильно, и таблица в серединеи кнопка справа заполнит дисплей.
Если я не делаю изменение размера, тогда перерисовка вызывается, когда узлы в дереве развернуты / свернуты, так как я вижу обновление ganttview, но, кажется, оно не расширяется, чтобы занять полноевысота экрана.
Я поместил скриншот ниже, который показывает в верхней части правильное отображение после resize (), и нижнюю половину, что я и вижу, если развернуть узел без выполненияразмер.
Мое утверждение состоит в том, что компонент знает, как правильно перекрасить себя (), как он правильно делает при изменении размера, но это должно вызывать специальное событие, которое вызывает более полное обновление.Я пробовал различные комбинации update
(), invalidate
(), repaint
(), но я не могу эмулировать полную repaint
(), которая происходит при изменении размера родительской формы.
Спасибо, Ace