单击过去透明框架(Java)

时间:2012-09-21 04:11:05

标签: java jframe transparent jna

我正在尝试使用Java(Swing)开发一个应用程序,它允许我在屏幕上叠加网格,并且能够点击网格后面的内容 - 例如,桌面上的图标。

我会使用透明JFrame还是透明JWindow来解决这个问题?

无论我使用什么,透明窗口/框架都需要

  • 永远在上面。
  • 占据整个屏幕。
  • 使用鼠标监听器注册每次点击。
  • 记录屏幕上点击的坐标。
  • 允许我使用Graphics类在屏幕上绘制网格,以及其他元素,如数字或图像,也应该点击。

任何方向都会受到赞赏。

道歉,如果我不够具体,但我没有找到可以做所有这些事情的演示窗口或框架。有一个例子hereanother here - 但我不知道如何在Eclipse中使用WindowUtils。这是我第一次进行GUI开发,除了基础Java类之外我从未使用过外部库。

1 个答案:

答案 0 :(得分:1)

  • 在顶部:Fr​​ame.setAlwaysOnTop()应该适合你
  • 全屏:将窗口大小设置为显示大小将使其占据整个屏幕
  • 事件和叠加绘画:实际行为可能因平台而异,但通常情况下,如果您使用Alpha组件绘制到窗口中,并且您的窗口名义上是透明的,那些未绘制的区域(或者有时是那些绘制的区域)低于某个alpha阈值)会将事件传递给下面的任何应用程序,窗口或组件 如果您捕获事件,则必须将它们重新引入到您的下方的任何窗口,这是非常重要的。如果您没有捕获事件,则需要安装特定于操作系统的事件处理程序来捕获感兴趣的事件。

JNA的WindowUtils.setWindowTransparent()应提供所需的绘制/事件行为,或者您可以使用更新的JVM版本中提供的AWTUtils等效项。