【发布时间】:2012-07-06 21:54:39
【问题描述】:
我正在尝试使用 Java 创建一个覆盖整个屏幕的全屏窗口。此窗口还必须具有一定的透明度(大约 30%-50% 透明)。当说整个屏幕时,我的意思是它涵盖了所有内容(包括 OSX/Linux/Windows 中的停靠栏/任务栏/菜单栏),当我说透明时,我的意思是实时透明,而不仅仅是被黑的屏幕截图。这是我知道/尝试过的:
- 使用 Java Fullscreen API:虽然它创建了一个真正的全屏,但它不能有一些透明度(只有不透明的颜色)。一种技巧是截取整个桌面并将其设置为窗口的背景,但这意味着它不是实时透明的。
- 设置窗口大小以匹配屏幕尺寸:当它填满整个屏幕时,在某些操作系统(例如 Mac OS X)中,窗口将呈现在停靠栏/菜单栏的后面,而不是在其上方。但是,透明度在这里确实有用。
- 使用 setWindowOpacity API:它适用于第二种情况,但不适用于第一种情况(全屏 API)
- 使用带有 alpha 的 setBackground:它的工作原理与 setWindowOpacity 类似,但仅适用于某些操作系统。但也不适用于全屏 API。
- 使用 JFrame/JWindow/JDialog/Frame/Window:尽我所能尝试所有窗口模型,但没有任何运气
所以我问这是否可以通过另一个我不知道的黑客来实现,那么我很乐意听到。
目标是在桌面上覆盖一个半透明的全屏。
【问题讨论】:
-
这周我短暂地追求过类似的东西。我希望创建一个彩色滤镜。鼠标点击需要点击过滤器后面的项目,而不是过滤器。我没有太努力研究,所以如果有人知道那就太好了!
-
@mrswadge: 你可以在你的窗口中添加鼠标监听器,然后当鼠标事件被触发(例如点击)时,切换窗口,并使用java.awt.Robot来模拟事件(mousePress) .这解决了您的部分问题。让我们希望他们解决关于真正全屏/透明度的部分。
标签: java swing jframe transparency fullscreen