Я создаю настраиваемый компонент качания (скорее, как практический мысленный эксперимент, чем что-либо еще).Пользовательский компонент качания: проблема с перерисовкой()
У меня проблемы с перекраской. Мой компонент имеет jtree
, а jtable
, а затем часть, которая полностью пользовательский окрашена (надеюсь в конечном итоге вполне MS проект-эск ganttview)
Конкретная проблема заключается в том, что когда JTree расширяется, таблица и gannt представление должно обновляться, чтобы отражать новые подпроекты в рамках недавно расширенного treenode. Они делают это, но размер не обновляется, поэтому в таблице не отображаются дополнительные строки, и мой экран gannt также не использует полную высоту.
Нечетная вещь заключается в том, что если я касаюсь ручка окна на jframe
(так даже при изменении размера 1px) - это, похоже, заставляет полностью обновить, а компонент затем отображает правильно, и таблица посередине, и gannt on справа заполните дисплей.
Если я не делаю изменения размера, тогда переименование вызывается, когда узлы в дереве расширяются/свертываются, так как я вижу обновление ganttview, но оно, похоже, не расширяется, чтобы охватить всю высоту экран.
Я поставил снимок экрана ниже, который показывает вверху правильный дисплей после изменения размера() и нижней половины, что я вижу, если я разворачиваю узел без изменения размера.
Мое утверждение состоит в том, что компонент знает, как правильно перерисовать(), поскольку он делает правильную вещь при изменении размера, но это должно вызывать специальное событие, которое заставляет более полно обновлять. Я пробовал различные комбинации update
(), invalidate
(), repaint
(), но я не могу эмулировать полное repaint
(), которое происходит при изменении размера родительской формы.
Спасибо, Ace
большое спасибо, это сделало трюк – phatmanace