2

我正在尝试用 Java (Swing) 开发一个应用程序,它可以让我在屏幕上覆盖一个网格,并能够单击网格后面的东西——例如,桌面上的图标。

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

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

  • 始终处于领先地位。
  • 占据整个屏幕。
  • 使用鼠标侦听器注册每次点击。
  • 记录点击在屏幕上的坐标。
  • 允许我使用 Graphics 类在屏幕上绘制一个网格,以及其他元素,如数字或图像,也应该单击通过。

任何方向将不胜感激。

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

4

1 回答 1

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

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

于 2012-09-21T15:05:47.723 回答