JPanel说不透明是什么意思?

在Swing JPanel中说不透明,这是什么意思?

另外JPanel VS JComponent与不透明相比如何?

请尽可能简单地解释,因此我对GUI编程不是很有经验。

在此先感谢您的帮助

不透明在Swing中有一个非常特殊的含义 – 它意味着组件在其边界内完全绘制了整个区域(请参阅setOpaque javadoc )

这主要用于确定是否需要重新绘制当前组件后面的组件。

  • 如果isOpaque为真,则不必重新绘制组件后面的任何内容(因为它只会被覆盖),因此可以省略这种背景绘制作为优化。
  • 如果isOpaque为false,则表示组件正在实现一些透明效果 – 例如,绘制中间具有半透明窗口的组件,或绘制非矩形组件

如果您正在创建自己的JComponent并将setOpaque设置为true但不遵守合同(即,尽管声称不透明,但您没有在边界内绘制完整区域),因此背景不会被重绘,您可能会得到意想不到的结果。

不透明和透明是相反的词。

窗户,水或空气都是透明的 – 你可以看透它们。

墙,泥或混凝土是不透明的 – 你无法看透它们。

在GUI编程方面,默认情况下JPanel和JComponent都是不透明的。 如果将它们设置为透明,则可能没有太大的区别,因为底层JFrame(或其他)通常与JPanel / JComponent的颜色相同。

另一个有用的参考是在AWT和Swing中的绘画文章中关于不透明度的部分。 知道JPanel在许多L&F上默认是不透明的 ,而JLabel则不是 。