java 具有透明度的全屏窗口

2024-02-06

我正在尝试使用 Java 创建一个覆盖整个屏幕的全屏窗口。这个窗口还必须有一定的透明度(大约30%-50%透明)。当我说整个屏幕时,我的意思是它覆盖了所有内容(包括 OSX/Linux/Windows 中的扩展坞/任务栏/菜单栏),当我说透明度时,我的意思是实时透明度,而不仅仅是被黑的屏幕截图。这是我所知道/尝试过的:

  • 使用 Java Fullscreen API:虽然它创建了真正的全屏,但您不能使用它具有一定的透明度(只能是不透明的颜色)。一种技巧是截取整个桌面的屏幕截图并将其设置为窗口背景,但这意味着它不是实时透明的。
  • 设置窗口大小以匹配屏幕尺寸:虽然它填充整个屏幕,但在某些操作系统(例如 Mac OS X)中,窗口将呈现在停靠栏/菜单栏后面,而不是其上方。然而,透明度在这里确实发挥作用。
  • 使用 setWindowOpacity API:它适用于第二种情况,但不适用于第一种情况(全屏 API)
  • 将 setBackground 与 alpha 一起使用:它的工作方式类似于 setWindowOpacity,但仅在某些操作系统中。但也不适用于全屏 API。
  • 使用 JFrame/JWindow/JDialog/Frame/Window:尝试了我可以的所有窗口模型,但没有任何运气

所以我问这是否可以通过另一个我不知道的黑客来实现,那么我会很高兴听到。

目标是在桌面上覆盖半透明的全屏。


  • 仅适用于可见的任务栏 e.i.

.

GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
  • 否则你会得到例外

.

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: 
The effects for full-screen windows are not supported. 

或通过使用brutte_force to DirectX我的电脑冻结两次,仅关闭电源以节省电脑的 GPU

import com.sun.awt.AWTUtilities;
import java.awt.Dimension;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class JFrameOpacityExample {

    private JFrame myFrame = new JFrame("Test Frame");
    private boolean opacity = true;
    private boolean resize = true;
    private JButton button = new JButton("Opacity");
    private JButton button1 = new JButton("Resize");

    public JFrameOpacityExample() {
        button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent evt) {
                Object src = evt.getSource();
                if (opacity) {
                    AWTUtilities.setWindowOpacity(myFrame, 0.50f);
                    opacity = false;
                } else {
                    AWTUtilities.setWindowOpacity(myFrame, 1.0f);
                    opacity = true;
                }
            }
        });
        button1.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent evt) {
                Object src = evt.getSource();
                if (resize) {
                    Rectangle dim = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
                    int h = dim.height;
                    int w = dim.width;
                    myFrame.setBounds(00, 00, w, h);
                    resize = false;
                } else {
                    myFrame.setBounds(100, 100, 400, 400);
                    resize = true;
                }
            }
        });
        JPanel panel = new JPanel();
        panel.add(button);
        panel.add(button1);
        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myFrame.add(panel);
        myFrame.setSize(400, 400);
        myFrame.setVisible(true);
    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                JFrameOpacityExample jFrameOpacityExample = new JFrameOpacityExample();
            }
        });
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 具有透明度的全屏窗口 的相关文章

随机推荐

  • 多个子进程

    有人可以帮助我了解如何创建具有相同父进程的多个子进程 以便完成特定工作的 某些 部分吗 例如 应用于子进程的外部排序算法 每个子进程对一部分数据进行排序 最后父进程将它们合并 编辑 也许我应该提到用循环分叉多个子进程 以下是如何分叉 10
  • 我怎样才能改变每个游戏对象的移动速度?

    在层次结构中我有 2 ThirdPersonController 在 窗口 gt 动画器 中 我创建了新的空状态 将其称为 步行 并将其设置为 HumanoidWalk 以便在运行游戏时两个玩家都在步行 在其中一个上 我添加了脚本并将第二个
  • 用于预览窗口后面的屏幕状态的 Aero 功能是什么?

    我到处寻找如何在我的程序中使用 Aero 我找不到任何 C 函数可以预览您自己的窗口后面的窗口 就像文件资源管理器或任何主流浏览器在标题栏上所做的那样 有些程序只是添加一个看起来像 Windows 7 标题栏的图像来伪造它 没有 Aero
  • DNA 到 RNA 并使用 Perl 获取蛋白质

    我正在开发一个读取 DNA 并找到其 RNA 的项目 我必须用 Perl 实现它 但我不擅长 将该 RNA 分成三联体以获得其等效的蛋白质名称 我将解释步骤 1 将以下DNA转录为RNA 然后使用遗传密码将其翻译为氨基酸序列 Example
  • netcore5视图组件自定义视图搜索路径不适用于区域

    我已按照此文档查看视图组件 https learn microsoft com en us aspnet core mvc views view components view aspnetcore 5 0 customize the vi
  • 验证 iOS 应用内购买的收据始终返回错误 21002

    我正在服务器端验证我的消费品应用内购买 也就是说 我通过以下方式从客户端获取收据 onChange of self storeObserver paymentStatus status in switch status case purch
  • .NET Windows 窗体应用程序是否可以在 64 位操作系统中运行,或者是否需要修改?

    一般来说 NET Windows 窗体应用程序可以在 64 位操作系统中运行吗 还是需要修改 如果它不依赖于 32 位外部库 例如 COM 组件 它将作为 64 位进程完美工作 并利用其优势 大地址空间 x64 指令集 如果它依赖于 32
  • xaml.cs 中的 Xamarin 局部变量并通过 XAML 文件进行打印

    我希望能够打印 XAML 中 CurrentOrder 的属性 这是我到目前为止所拥有的 OrderPage xaml cs public partial class OrderPage ContentPage private Order
  • 使用 MediatR 时可以让一个处理程序调用另一个处理程序吗?

    或者这被认为是不好的做法还是什么 我有一个通知触发 4 5 个处理程序 这些处理程序依次调用数据库来检索数据 每个这些调用也可以单独调用 因此它们本身就是请求 处理程序 Thanks Jimmy Bogard mediatr 的作者 说你应
  • CListCtrl 用鼠标选择多行

    There is a CListCtrl with SetExtendedStyle LVS EX GRIDLINES LVS EX FULLROWSELECT a single selection is false I want to b
  • 如何使用Windows Media Player播放加密的视频文件?

    我加密我的 mp4转换为自定义格式 opu 现在我应该解密我的文件并将它们保存到应用程序开始时的临时文件夹中 并使用它们来播放WindowsMediaPlayerC 中的控制 所以我有从临时文件夹中窃取文件的风险 防止我的文件被盗的最佳方法
  • 从亚马逊s3存储桶检索静态文件

    我正在尝试以这样的方式配置我的 nginx 每当出现一些错误的网关响应时 我都会尝试从 s3 存储桶中获取静态 html 内容 请求的url结构为some bucket folder1 folder2 text 数据存储在 s3 存储桶中
  • 如何设置编辑器以在 Windows 上使用 Git?

    我正在尝试Windows 上的 Git 我尝试 git commit 并收到此错误 终端很笨 但没有 VISUAL 也没有 编辑器定义 请提供 使用 m 或 F 选项的消息 所以我发现我需要一个名为 EDITOR 的环境变量 没问题 我将其
  • 单元测试 Maven 插件

    我正在寻找有关如何为 Maven 插件编写单元测试的信息 虽然有a page http maven apache org plugin developers plugin testing html在关于这一主题的 Maven 站点上 只有一
  • 不可哈希类型:“dict”类型错误[重复]

    这个问题在这里已经有答案了 假设我有这本字典 items 1 title u testing123 description u testing456 2 description u testing123 description u test
  • IPython 中的物理括号符号

    我正在努力拥有ket符号通常在乳胶中写为 ket psi 然而 当写在 当使用以下方式编写时 这也不起作用IPython display latex documentclass article usepackage amsmath begi
  • AngularJS - 将多个 get 请求收集到 json 数组中,然后传递给指令

    我是角度新手 一直在努力解决我的问题 我需要多次访问 API 来获取用户数据 将所有内容存储为 JSON 数组 当收集所有数据 所有结果作为一个数组 时 需要将其传递给指令 该指令将使用它来绘制可视化 例如 d3 js 饼形图 scope
  • ctx.Err() 与 ctx.Done() chan 关闭检查:有区别吗?

    我处于一个长时间运行的可取消函数中 该函数具有永远循环 我需要检查上下文是否已关闭 go func for if ctx Err nil return do work vs go func for select case lt ctx Do
  • Xcode 组织者尝试在错误的目录路径访问传输程序

    Transporter not found at path usr local itms bin iTMSTransporter You should reinstall the application 所以我检查了路径 Applicati
  • java 具有透明度的全屏窗口

    我正在尝试使用 Java 创建一个覆盖整个屏幕的全屏窗口 这个窗口还必须有一定的透明度 大约30 50 透明 当我说整个屏幕时 我的意思是它覆盖了所有内容 包括 OSX Linux Windows 中的扩展坞 任务栏 菜单栏 当我说透明度时