Я пытаюсь понять, когда использовать revalidate/repaint/pack.Цикл обновления качания
Удивительно, но я не нашел подробной документации под капотом (не стесняйтесь ссылаться).
До сих пор я понял, что это все ответственность RepaintManager.
- краска/перекрашивать см, что видит, как грязный/чистый
- пакет/проверки/перепроверки см, что является действительным
This article on Oracle объясняет, что вызов перерисовки ставит в очередь на работу на Event Dispatcher Thread что в свою очередь вызовет paintImmediately() на компоненте (это перерисовывает компонент).
This trail указывает, что быть или не быть действительным связано с LayoutManager. И это касается размера компонента, а не контента.
- Правда ли, что вы должны переустановить, когда вы перемещаете/изменяете размер своего компонента и перерисовываете его при изменении его содержимого?
- Действительно ли метод pack() - это устаревшая вещь, которую вы никогда не должны звонить?
- Являются ли какие-либо из вышеуказанных утверждений неправильными?
Не могли бы вы определить краску с точки зрения изменений, которые она подразумевает? Я начинаю сомневаться, что полностью понимаю, что это значит. – kotoko
@kotoko Я не уверен, что получаю, какой ответ вы ищете (ответьте на ваш комментарий). Когда вы рисуете (реализация метода 'paintComponent()'), это означает, что вы рисуете линии, круги (заполненные или нет), прямоугольники (заполненные или нет), изображения, текст и т. Д. (Все операции, которые вы можете фактически вызывать на «Graphics/Graphics2D»). –
Я пытался понять, какие методы срабатывают.Теперь я получаю это (эмпирическое правило): действие, связанное с компоновкой/компонентом, влияет на действительность (ваш 1.); Графические/графические операции 2D влияют, если они грязные. – kotoko