1

透明を作成しようとしてJFrameいます。つまり、閉じるボタンのある上部のバーである境界線が最小化されている間、内部が完全に透明なウィンドウです。新しいJpanelを作成してから を使用しようとしましたpanel.setOpaque(false);が、役に立ちませんでした。

私はスイングとJava GUIに非常に慣れていないので、助けてもらいたいです。

4

1 に答える 1

0

あなたがやりたいことは可能ですが、あなたが想像している方法ではありません...

標準のオペレーティング システムのウィンドウ装飾 (つまり、ウィンドウの境界線、閉じる、最大化、最小化ボタン) が必要な場合、それは不可能です。「装飾」されたフレームに透明度を適用することはできません。

ただし、これは Java のデフォルトのウィンドウ装飾を使用して行うことができます。以下のコードを試してください。

public static void main(String[] args) {
    JPanel panel = new JPanel() {
        @Override
        protected void paintComponent(Graphics g) {
            g.setColor(Color.RED);
            g.drawRect(32,32,32,32);
        }
    };

    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame f = new JFrame();
    f.add(panel);
    f.setSize(256,256);

    // The following two statements cause the window-transparency:
    f.setUndecorated(true);
    f.setBackground(new Color(0,255,0,0));

    f.setVisible(true);
}

個人的には、Java ウィンドウの装飾が見栄えがよくないと思います...それとは別に、OS 固有の機能 (ウィンドウを画面の端に移動してウィンドウを「半分最大化」することによるウィンドウのスナップ機能など) はありません。うまくいきません... 私にとってこれは契約を破るものですが、ニーズによっては、許容できる解決策になる可能性があります。:)

于 2014-09-15T11:58:45.773 に答える