我使用 Java 的半透明形状窗口来创建类似于 Growl 的通知系统。基本上,屏幕右侧潜伏着一个不可见的始终在顶部的窗口,当通知进入时会添加到该窗口中。它可以按需要工作。
但是,如果我尝试单击位于此不可见窗口(最大 400 像素宽)范围内的另一个应用程序中的按钮,则单击事件会转到我的应用程序,这很奇怪,因为它是不可见的并且不做任何事情。这真的让我很困惑;我以为另一个应用程序已冻结。
有没有办法让其他应用程序“点击”我的应用程序?
我觉得这里不需要完整的 SSCCE,但这里有一段可能相关的代码:
// Set up frame: no border, etc. (undecorated); transparent.
frame.setUndecorated(true);
frame.setAlwaysOnTop(true);
frame.setResizable(false); // on Mac and maybe other platforms, even
// undecorated windows can be
// resized
AWTUtilities.setWindowOpaque(frame, false);
// Determine and set size and position.
// Height: maximized; width: maximized up to 400px.
Toolkit toolkit = Toolkit.getDefaultToolkit();
Insets insets = toolkit.getScreenInsets(frame
.getGraphicsConfiguration());
Dimension screenSize = toolkit.getScreenSize();
Dimension availableSpace = new Dimension(screenSize.width - insets.left
- insets.right, screenSize.height - insets.bottom - insets.top);
frame.setSize(new Dimension(
400 > availableSpace.width ? availableSpace.width : 400,
availableSpace.height));
frame.setLocation(screenSize.width - insets.right
- frame.getSize().width, insets.top);
// Set the content of the frame to the datum holder.
frame.setContentPane(client.createPanel());
谢谢!