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
则不是 。