我正在尝试为外国应用程序创建HUD样式显示。
要做到这一点,我需要制作一个透明的覆盖窗口,它将放在顶部 国外申请的窗口。覆盖窗口应该允许我放置 小部件并在其上绘制文本。事件应该转发到底层窗口, 如果它们发生在透明区域(否则允许小部件工作 预期)。
我在OSX上用Java做这个。我希望使用具有可移植性的纯Java来实现这一点 其他平台,但如果不可能,我会很好的解决方案只允许 我通过Cocoa(Rococoa)或Carbon在OSX上做到这一点。
答案 0 :(得分:22)
实际上,能够自己解决这个问题。似乎比我预期的更容易:
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();
}
}
答案 1 :(得分:-1)
如果您要为游戏或其他内容创建一个窗口,请使用JFrame
。