如何在Java中创建覆盖窗口?

我正在尝试为外部应用程序创建HUD样式显示。

为此,我需要创建一个透明的叠加窗口,该窗口将位于外部应用程序窗口的顶部。覆盖窗口应允许我放置小部件并在其上绘制文本。如果事件发生在透明区域上,则事件应该转发到基础窗口(否则,使窗口小部件可以按预期工作)。

我正在使用Java的OSX上执行此操作。我希望可以使用纯Java来实现此目的,并且可以移植到其他平台,但如果不可能的话,我会选择可以通过Cocoa(Rococoa)或Carbon在OSX上实现此解决方案的解决方案。

回答:

在Java教程表明这是可以实现的一种方式。这是使用RGBA(红色,绿色,蓝色,alpha)值作为背景色的另一种方法:

public class Overlay {

public static void main(String[] args) {

JFrame frame = new JFrame("Transparent Window");

frame.setUndecorated(true);

frame.setBackground(new Color(0, 0, 0, 0));

frame.setAlwaysOnTop(true);

// Without this, the window is draggable from any non transparent

// point, including points inside textboxes.

frame.getRootPane().putClientProperty("apple.awt.draggableWindowBackground", false);

frame.getContentPane().setLayout(new java.awt.BorderLayout());

frame.getContentPane().add(new JTextField("text field north"), java.awt.BorderLayout.NORTH);

frame.getContentPane().add(new JTextField("text field south"), java.awt.BorderLayout.SOUTH);

frame.setVisible(true);

frame.pack();

}

}

以上是 如何在Java中创建覆盖窗口? 的全部内容, 来源链接: utcz.com/qa/405637.html

回到顶部