2

質問:ボタンがクリックされたときに透明なJFrameに追加されたJPanelを非表示にするには。

問題:JPanelは正しく非表示にされていませんが、暗い色で表示されています。アルファチャネルを有効にしないと、[OK]が非表示になります。

ご協力いただきありがとうございます。

サンプルコード:

public class TestJFrame extends JFrame {

private JButton mSwitchButton = new JButton("Switch");
private JPanel mPanel = new JPanel();

public static void main(String[] args) {
    new TestJFrame();
}

public TestJFrame() {
    setSize(400, 300);      
    getContentPane().setLayout(new BorderLayout());
    this.setBackground(new Color(50, 50, 50, 50));      
    mPanel.setBackground(Color.RED);
    getContentPane().add(mPanel, BorderLayout.CENTER);
    getContentPane().add(mSwitchButton, BorderLayout.SOUTH);        
    mSwitchButton.addMouseListener( new MouseListener() {           
                    ...

        @Override
        public void mouseClicked(MouseEvent arg0) {
            mPanel.setVisible(false);
        }
                    ...
    });     
    pack();
    setVisible(true);
}
4

1 に答える 1

3

暗い色はJFrameと関係があります。JFrame自体が正しく非表示になっていないのです。あなたのJPanelはうまく隠されています、しかし、あなたが設定したとき

this.setBackground(new Color(50, 50, 50, 50));

次に、JPanelを削除します。残っているのは、その50のアルファ値です。次のように設定します。

this.setBackground(new Color(50, 50, 50, 0));

自分のマシンでテストしたときにこれを修正しました。

于 2012-10-08T21:45:58.273 に答える