我制作了一个面板并将其设置为填满屏幕,现在我可以看到它下面的窗口,但我希望它能够点击,这意味着他们可以通过透明度单击文件或查看另一个对象的工具提示.
RE:这可能太明显了,但您是否尝试通过右键单击并选择"Send to Back"将面板发送到后面?
我的意思是像桌面或Firefox,而不是我的项目中的东西.
我想在Java中创建一个透明的覆盖层,总是在顶部,并且我可以点击.我发现了一些关于这个问题的类似 帖子,但即使按照他们的答案,我也有一个问题.
我的问题是让整个窗口点击.我并没有使其与一个JFrame工作的任何问题,但一旦我添加任何成分给它(的JLabel或ImagePanel)中,点击通过属性不结转给他们.
因为我想为我的应用程序提供一个背景图像,这基本上使我无法看到当我单击文本/图像所覆盖的区域时窗口如何聚焦的代码.
在我展示我正在使用的代码之前,我首先想要参考这些 线程,这些线程基本上准确地描述了我想要的东西,除了在C#中.
我的目标是创建一个带有透明.png图像和一些顶部文本的叠加层,这些叠加层会在关键事件上发生变化.如果它使用JFrame或任何其他库无关紧要.我只需要它与Windows兼容.
我还想提一下,我有一些Java经验,但是使用JFrame是一个新手.
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import com.sun.jna.platform.WindowUtils;
public class Overlay {
public static void main(String[] args) {
JFrame frame = new JFrame("Overlay Window");
frame.setUndecorated(true);
frame.setAlwaysOnTop(true);
frame.getRootPane().putClientProperty("apple.awt.draggableWindowBackground", false);
frame.setLocation(400, 400);
frame.getContentPane().setLayout(new java.awt.BorderLayout());
JLabel textLabel = new JLabel("I'm a label in the window", SwingConstants.CENTER);
frame.getContentPane().add(textLabel, BorderLayout.CENTER);
frame.pack();
System.setProperty("sun.java2d.noddraw", "true");
WindowUtils.setWindowTransparent(frame, true);
WindowUtils.setWindowAlpha(frame, …Run Code Online (Sandbox Code Playgroud)