Question: To hide a JPanel which has been added to a transparent JFrame when the button is clicked.
Problem: The JPanel is not correctly hidden, but is still shown with darker colour. Without the alpha channel enabled, it hides ok.
Thanks for your help.
Example Code:
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);
}
The darker color has to do with the JFrame — the JFrame itself is what is not being hidden correctly. Your JPanel is being hidden fine, however, when you set
and then remove the JPanel, what you have left is that 50 alpha value. Setting it to:
corrected this when I tested it on my machine.