Java:具有非透明组件的透明Windows?

时间:2010-07-30 13:42:30

标签: java swing opacity

我刚刚遇到了实用程序(com.sun.awt.AWTUtilities),以使您的JFrame 真正透明。文档here。这非常好。即使在Linux中,桌面效果也会打开摇摆不定的窗口。但我想在透明的JFrame上制作一个不透明的组件。

有人知道,如果有可能,怎么做?

以下是我使用的代码:

import com.sun.awt.AWTUtilities;

/* "this" is the JFrame */
this.setUndecorated(true);
AWTUtilities.setWindowOpaque(this, true);
AWTUtilities.setWindowOpacity(this, 0.5f);
AWTUtilities.setWindowShape(this, new RoundRectangle2D.Float(0f, 0f, (float) getWidth(), (float) getHeight(), 15f, 15f));

2 个答案:

答案 0 :(得分:4)

IIUC,Translucent Windows适用于整个java.awt.Window和内容,但您可以尝试下面显示的方法和example

JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setBackground(new Color(0f, 0f, 0f, 0.1f));
f.setUndecorated(true);
f.add(new JLabel("<html>Testing<br>1, 2, 3</html>"));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);

答案 1 :(得分:1)

您要做的是setWindowOpaquefalse并使用低alpha绘制背景(如果想要完全透明,则绘制0 alpha)。组件仍将被绘制为不透明。请参阅this article并查看每像素半透明度