Java 不透明属性在Swing中如何工作?

Java 不透明属性在Swing中如何工作?,java,swing,opacity,Java,Swing,Opacity,这是我从这里得到的一个简单的应用程序 这应该可以解释set不透明是如何工作的 我不明白的是,他为什么要在透明层的上面添加不透明层?不应该是另一条路吗 我想象它应该如何工作的方法是在不透明层的顶部添加透明层,有点像在电话上放置屏幕保护器对不起这个愚蠢的例子 有人能解释一下透明性在java中是如何工作的吗 很抱歉,我的问题有点幼稚,但这已经困扰了我一段时间了 是的,该示例基于这样一个事实:如果布局为空,子组件确实是按相反顺序绘制的。实现依赖关系。这至少值得一提。添加可见边框将使其更加明显: priv

这是我从这里得到的一个简单的应用程序 这应该可以解释set不透明是如何工作的

我不明白的是,他为什么要在透明层的上面添加不透明层?不应该是另一条路吗

我想象它应该如何工作的方法是在不透明层的顶部添加透明层,有点像在电话上放置屏幕保护器对不起这个愚蠢的例子

有人能解释一下透明性在java中是如何工作的吗


很抱歉,我的问题有点幼稚,但这已经困扰了我一段时间了

是的,该示例基于这样一个事实:如果布局为空,子组件确实是按相反顺序绘制的。实现依赖关系。这至少值得一提。添加可见边框将使其更加明显:

private static class CirclePanel extends JPanel {
    CirclePanel() {
        setBorder(BorderFactory.createLineBorder(Color.RED));
    }

你知道阿尔法吗?我知道阿尔法值是什么意思。但是这和我的问题有什么关系呢?所以alpha可以用来控制javaOk中任何组件的不透明度。我认为一个更好的问题是,面板的涂漆顺序如何?我在每个面板的paintComponent方法中添加了一个print语句,令我惊讶的是,面板后来添加了底部面板,首先调用了它的paintComponent方法。你能解释一下吗?即使我设置了布局管理器,paintComponent方法仍然是按相反的顺序调用的。布局位于validation invalidate/validate上,调用了一个方法paintChildren,当然它使用相同的代码。
private static class CirclePanel extends JPanel {
    CirclePanel() {
        setBorder(BorderFactory.createLineBorder(Color.RED));
    }