11

外国のアプリケーション用にHUDスタイルのディスプレイを作成しようとしています。

これを行うには、外部アプリケーションのウィンドウの上に配置される透明なオーバーレイウィンドウを作成する必要があります。オーバーレイウィンドウでは、ウィジェットを配置してテキストを描画できるはずです。イベントが透明な領域で発生した場合は、イベントは基になるウィンドウに転送される必要があります(それ以外の場合は、ウィジェットが期待どおりに機能するようにします)。

私はこれをOSXとJavaで行っています。他のプラットフォームへの移植性を備えた純粋なJavaでこれを実行したいと思いますが、不可能な場合は、Cocoa(Rococoa)またはCarbonを介してOSXでこれを実行できるソリューションで問題ありません。

4

1 に答える 1

26

Javaチュートリアルは、これを実現する1つの方法を示しています。背景色にRGBA(赤、緑、青、アルファ)値を使用する別のアプローチは次のとおりです。

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();
    }
}
于 2009-11-20T03:27:53.927 に答える