JPanel说不透明是什么意思?

时间:2010-12-11 11:22:21

标签: java user-interface swing

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

JPanel VS JComponent与opaque相比如何进行比较?

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

提前感谢您的帮助

3 个答案:

答案 0 :(得分:12)

Opaque在Swing中具有非常特殊的含义 - 它意味着组件在其范围内完全绘制了整个区域(参见setOpaque javadoc

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

  • 如果isOpaque为true,则为 不必重绘任何东西 组件后面(因为它会 只是被覆盖),因此 背景图可以省略为 优化。
  • 如果isOpaque为false,则表示 该组件正在实现一些透明度 影响 - 例如绘制一个在中间有一个半透明窗口的组件,或绘制一个非矩形组件

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

答案 1 :(得分:6)

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

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

墙壁,泥土或混凝土是不透明的 - 你无法透视它们。

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

答案 2 :(得分:2)

另一个有用的参考是文章Opacity中关于Painting in AWT and Swing的部分。知道许多opaque by default JPanelL&Fs,而JLabelnot,这也很有帮助。