我想为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()”. (这曾经可以使用AFAIK,但现在不再有效)
> GlassPane
> AlphaComposite
> setPaint()
请先测试一下您的想法/代码.我已经尝试过很多似乎“没问题”的东西,但似乎没有……所有帮助都将不胜感激.