changing background on JLabel shifts components
- by Aly
Hi,
The code I am using is:
public class Test extends JFrame implements ActionListener{
    private static final Color TRANSP_WHITE = new Color(new Float(1), new Float(1), new Float(1), new Float(0.5)); 
    private static final Color TRANSP_RED = new Color(new Float(1), new Float(0), new Float(0), new Float(0.1));
        private static final Color[] COLORS = new Color[]{ TRANSP_RED, TRANSP_WHITE};
        private int index = 0;
    private JLabel label;
    private JButton button; 
    public Test(){
        super();
        setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
        label = new JLabel("hello world");
        label.setOpaque(true);
        label.setBackground(TRANSP_WHITE);
        getContentPane().add(label);
        button = new JButton("Click Me");
        button.addActionListener(this);
        getContentPane().add(button);
        pack();
        setVisible(true);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource().equals(button)){
            label.setBackground(COLORS[index % (COLORS.length )]);
            index ++;
        }
    }
    public static void main(String[] args) {
        new Test();
    }
}
When I click the button to change the labales color the GUI looks like this:
Before:
After:
Any ideas why?