Вариант использования стеклянной панели против многослойной панели

Я всегда немного не понимал разницу между стеклянной панелью и многослойной панелью. Является ли стеклянная панель, по сути, просто «самым верхним слоем корневой панели» или она ведет себя по-другому? Когда бы вы использовали многослойную панель вместо стеклянной панели?


person Amanda S    schedule 01.04.2010    source источник


Ответы (1)


Это две разные вещи:

  • многоуровневая панель является местом назначения всего содержимого, которое добавляется или отображается внутри JFrame. Например, каждый нормальный компонент, такой как JLabels, JTextFields, JTable и т. д., кроме того, он неявно обрабатывает z-упорядочение элементов, которые добавляются к нему, поэтому он может обрабатывать всплывающие меню или эффекты перетаскивания: это потому, что всплывающее меню добавлено на многоуровневую панель с az выше, чем у обычных компонентов, с конечным эффектом, чтобы оставаться поверх других вещей. См. здесь, чтобы лучше понять поведение.

  • стеклянная панель — это необязательный слой, который по умолчанию скрыт и в любом случае остается поверх панели слоев. Таким образом, в основном все, что вы рисуете на стекле, всегда будет видно: вы можете думать об этом как о прозрачном листе, который накладывается поверх обычного JFrame, который вы можете использовать, если вам нужны специальные эффекты.

И многослойная панель, и стеклянная панель размещаются на корневой панели, которая является основой, из которой строится каждый кадр.

person Jack    schedule 01.04.2010
comment
Можете ли вы добавить JLabels, JTexFields, JTable и т. д. на стекло? Или просто рисовать что-то прямо на нем? - person Guillaume F.; 29.03.2020