JPanel сказал, что непрозрачный, что это значит? - PullRequest
5 голосов
/ 11 декабря 2010

В Swing JPanel называется непрозрачным, что это значит?

Кроме того, как JPanel VS JComponent по сравнению с непрозрачным?

Пожалуйста, объясните, если это возможно, простыми словами, поэтому я не очень опытен в программировании GUI.

Заранее спасибо за помощь

Ответы [ 3 ]

12 голосов
/ 11 декабря 2010

Непрозрачный имеет очень специфическое значение в Swing - это означает, что компонент полностью закрашивает всю область в пределах своих границ (см. setOpaque javadoc )

Это используется в первую очередь для определения того,необходимо перекрасить компоненты за текущим компонентом.

  • Если isOpaque имеет значение true, нет необходимости перерисовывать что-либо за компонентом (так как оно будет просто перезаписано), поэтому такой фоновый рисунок может быть опущен в качестве оптимизации.
  • ЕслиisOpaque имеет значение false, то это означает, что компонент реализует некоторые эффекты прозрачности - например, рисование компонента с полупрозрачным окном посередине или рисование непрямоугольного компонента

Если высоздавая свой собственный JComponent и устанавливая для trueOpaque значение true, но не соблюдайте контракт (т. е. вы не рисуете всю область в пределах границ, несмотря на то, что претендуете на непрозрачность), тогда вы можете получить неожиданные результаты из-за отсутствия перерисовки фона.

6 голосов
/ 11 декабря 2010

Непрозрачный и прозрачный являются противоположными словами.

Окно, вода или воздух прозрачны - сквозь них видно.

Стена, грязь или бетон непрозрачны - сквозь них не видно.

С точки зрения программирования GUI, JPanel и JComponent по умолчанию непрозрачны. Если вы установите их прозрачными, вы, вероятно, не увидите большой разницы, поскольку базовый JFrame (или любой другой) обычно будет того же цвета, что и JPanel / JComponent.

2 голосов
/ 11 декабря 2010

Еще одна полезная ссылка - это раздел Непрозрачность в статье Живопись в AWT и Swing .Также полезно знать, что JPanel по умолчанию непрозрачно на многих L & Fs , тогда как JLabel равно , а не .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...