【问题标题】:Ability to click through a java app能够单击通过 Java 应用程序
【发布时间】:2010-11-12 18:03:46
【问题描述】:

我有一个简单的程序,它 atm 显示一个带有图像的透明窗口,它总是在其他窗口的顶部。是否可以通过我的应用直接输入,以便我可以点击下面的程序?

例如,窗口位于桌面背景之上,我希望能够点击图标而不是我的“覆盖应用”。

谢谢。

【问题讨论】:

    标签: java


    【解决方案1】:

    在 Windows 7 上使用JNAWindowUtils 可以实现此效果(其他系统未经测试):

    JFrame frame = new JFrame();
    //...
    frame.setAlwaysOnTop(true);
    System.setProperty("sun.java2d.noddraw", "true");
    WindowUtils.setWindowTransparent(frame, true);
    WindowUtils.setWindowAlpha(frame, 0.6f);
    

    感谢 Nate 对 setAlwaysOnTop 的评论,使之成为更可行的选择。

    【讨论】:

    • 如果你也调用 frame.setAlwaysOnTop(true) 会发生什么?
    【解决方案2】:

    我认为您不能轻易做到这一点,这是因为在您的操作系统将鼠标点击发送到 Java 应用程序之后,您无法再次将鼠标点击发送回以激活 Java 应用程序下方的任何内容。

    如果一切都在一个 Java 应用程序中而不是在单独的环境中,您可以轻松地做到这一点。

    【讨论】:

    • 你可以用 X11 做到这一点,但它不是微不足道的,而且肯定不便携。
    【解决方案3】:

    您可以使用此代码点击JFrame...

    AWTUtilities.setWindowOpaque(this, false);
    AWTUtilities.setWindowOpacity(this, 0.8f);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-24
      • 2012-03-20
      • 2014-04-04
      • 1970-01-01
      • 2017-12-09
      • 2018-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多