设置透明JFrame中组件的可见性

时间:2012-10-08 21:09:48

标签: java swing jframe transparency alpha-transparency

问题:隐藏在单击按钮时添加到透明JFrame的JPanel。

问题:JPanel未正确隐藏,但仍显示颜色较深。如果没有启用Alpha通道,它会隐藏。

感谢您的帮助。

示例代码:

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);
}

1 个答案:

答案 0 :(得分:3)

较暗的颜色与JFrame有关 - JFrame本身没有被正确隐藏。但是,当你设置

时,你的JPanel被隐藏得很好
this.setBackground(new Color(50, 50, 50, 50));

然后删除JPanel,剩下的就是50 alpha值。将其设置为:

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

在我的机器上测试时纠正了这个问题。