我想为 Frame(或 JFrame)创建完全透明的背景并让它显示透明动画。我设法让它在 Windows 7 x64 中运行,但相同的代码无法在我的 Linux (Lubuntu x64 15.04) 上运行。
下面的代码显示了我想要实现的目标——只需复制并粘贴它即可。我只想让小矩形在屏幕上移动而不留下痕迹。
static int a = 0;
public static void main(String[] args) {
JFrame f = new JFrame();
f.setUndecorated(true);
f.setBackground(new Color(0, 0, 0, 0));
f.setVisible(true);
f.setSize(512, 512);
f.add(new JPanel() {
@Override
public void paintComponent(Graphics gr) {
Graphics2D g = (Graphics2D)gr;
g.setBackground(new Color(0, 0, 0, 0));
g.clearRect(0, 0, 512, 512);
g.drawRect(a, a++, 2, 2);
}
});
while(true) {
try {
Thread.sleep(30);
} catch(InterruptedException e) {
e.printStackTrace();
}
f.repaint();
}
}
我想要实现的目标(如 Windows 中所示)以及我通过 Lubuntu 15.04 获得的目标:
我只想看到小方块的移动,就像 Windows 7 上显示的那样 - 我不想看到痕迹。
请不要给我 Oracle 透明度和窗口文档的链接——我已经检查了三次。
我尝试过的:
- Graphics2D 的透明空间的“copyArea()”。 (据我所知,这曾经有效,但现在不再有效)
- 玻璃板
- 阿尔法复合材料
- 设置绘制()
请先测试一下你的想法/代码。我已经尝试过很多“这应该有效”的东西,但似乎并没有......非常感谢所有帮助。