【发布时间】:2010-11-12 18:03:46
【问题描述】:
我有一个简单的程序,它 atm 显示一个带有图像的透明窗口,它总是在其他窗口的顶部。是否可以通过我的应用直接输入,以便我可以点击下面的程序?
例如,窗口位于桌面背景之上,我希望能够点击图标而不是我的“覆盖应用”。
谢谢。
【问题讨论】:
标签: java
我有一个简单的程序,它 atm 显示一个带有图像的透明窗口,它总是在其他窗口的顶部。是否可以通过我的应用直接输入,以便我可以点击下面的程序?
例如,窗口位于桌面背景之上,我希望能够点击图标而不是我的“覆盖应用”。
谢谢。
【问题讨论】:
标签: java
在 Windows 7 上使用JNA 的WindowUtils 可以实现此效果(其他系统未经测试):
JFrame frame = new JFrame();
//...
frame.setAlwaysOnTop(true);
System.setProperty("sun.java2d.noddraw", "true");
WindowUtils.setWindowTransparent(frame, true);
WindowUtils.setWindowAlpha(frame, 0.6f);
感谢 Nate 对 setAlwaysOnTop 的评论,使之成为更可行的选择。
【讨论】:
我认为您不能轻易做到这一点,这是因为在您的操作系统将鼠标点击发送到 Java 应用程序之后,您无法再次将鼠标点击发送回以激活 Java 应用程序下方的任何内容。
如果一切都在一个 Java 应用程序中而不是在单独的环境中,您可以轻松地做到这一点。
【讨论】:
您可以使用此代码点击JFrame...
AWTUtilities.setWindowOpaque(this, false);
AWTUtilities.setWindowOpacity(this, 0.8f);
【讨论】: