Как перекрасить после исчезновения всплывающей подсказки?

Я создал апплет, который имеет одну большую панель для отображения данных, окруженную несколькими элементами управления (кнопки, текстовые поля и т. Д.). Большая панель содержит несколько слоев надписей, которые я создаю сам.

У всех элементов управления есть подсказки, связанные с ними, и некоторые из этих подсказок перекрывают основную панель. Когда они исчезают, они оставляют дыру в изображении главной панели, пока главная панель не будет перекрашена.

Теперь заметьте, это не всегда происходит. Это происходит только тогда, когда курсор находится в определенном диапазоне. Если вы достаточно далеко ушли влево или вправо (для изменений вдоль оси Y различий не отмечено), отверстия исчезают, когда подсказка исчезает.

Я не очень разбираюсь в том, как должны работать подсказки и перерисовка, и если это признак того, что с моей программой что-то ужасно не так, но если я могу просто вызывать repaint на главной панели всякий раз, когда подсказка исчезает, я должен быть в порядке. Есть ли что-то, что я могу переопределить во всплывающей подсказке, чтобы это произошло?

Я использую Swing

Благодарю.

1 ответ

Решение

Чтобы ответить на ваш вопрос (после того, как вы нашли решение по комментариям): в Swing встроено довольно сложное управление перерисовкой. Когда всплывающая подсказка исчезает, прямоугольник под ней перерисовывается.

Теперь, какие компоненты должны быть перекрашены? Все те, кто перекрывается с данным прямоугольником и сами не скрыты (в рассматриваемой области) другими компонентами - здесь учитываются только непрозрачные компоненты. (Это единственная причина, по которой нам нужно opaque свойство на JComponent - для оптимизации перекраски.)

Ваш лейбл объявил себя непрозрачным, но на самом деле не нарисовал всю область на paintComponentи такая область всплывающей подсказки, которая должна была быть закрыта этикеткой, оставалась неокрашенной.

Объявление вашей этикетки частично прозрачной также привело к перекрашиванию соответствующей области компонента за ней.

Другие вопросы по тегам