【问题标题】:Full Screen Transparent Color Overlay in JavaJava中的全屏透明颜色叠加
【发布时间】:2018-08-24 09:03:00
【问题描述】:

是否可以在 Java 中创建透明颜色叠加层?它还应该覆盖任务栏和工具栏。以下代码不起作用。它只是创建一个全屏的黑色窗口。

public class Overlay extends Window {
    private static final long serialVersionUID = 1 L;
    public Overlay(Window owner) {
        super(owner);
    }

    public void show() {
        try {
            setVisible(true);
            setBackground(new Color(0, 0, 0, 0.5 f));
            GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this);
        } catch (Exception error) {
            // Error
        }
    }
}

谢谢!

【问题讨论】:

  • Java transparent window的可能重复
  • @Piro 该帖子中建议的答案在 MacOS(全屏)中不起作用。
  • 你应该修复提供的代码,因为不编译

标签: java swing awt fullscreen graphic


【解决方案1】:

此代码适用于我,但有时会引发异常(每 10 次运行 9 次成功)。我在其他电脑上测试过,总是失败。无论如何,我发布它是因为它可能会有所帮助,并且您会弄清楚要做什么才能使其 100% 发挥作用。

import javax.swing.*;
import java.awt.*;

public class Overlay extends Window {
    private static final long serialVersionUID = 1L;
    public Overlay(Window owner) {
        super(owner);
    }

    public void showIt() {
        try {
            GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this);
            setVisible(true);
            SwingUtilities.invokeLater(() -> {
                setBackground(new Color(255,255,255,124));
            });
        } catch (Exception error) {
            System.out.println(error);
        }
    }

    public static void main(String[] args) {
        new Overlay(null).showIt();
    }
}

结果是全屏窗口,不透明度约为 50%。

编辑:窗口行为取决于平台。我在 Linux Mint 18.3 Cinnamont 64 位上进行了测试。

【讨论】:

  • 感谢您的回答!然而,这为我产生了一个灰色的窗口。我假设这是 MacOS 处理全屏方式的平台相关问题。
猜你喜欢
  • 2012-03-15
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 2011-10-06
  • 2015-12-28
  • 2015-02-05
  • 1970-01-01
相关资源
最近更新 更多