How to put a background image on GridBagLayout
        Posted  
        
            by 
                Loligans
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Loligans
        
        
        
        Published on 2013-06-26T21:37:24Z
        Indexed on 
            2013/06/26
            22:21 UTC
        
        
        Read the original article
        Hit count: 350
        
I am trying to work with layout managers for the first time, and they are just kicking me in the teeth. I am trying to make a background image and then put buttons on top, using GridBagLayout, if there is a a better layoutmanager please do tell. As for trying to learn how to use layout managers, its very difficult and any learning references would also be much appreciated.
 This is what it looks like currently,
I can get the frame to show the full image, but when i use gridlayout manager, it does that
This is what it looks like currently,
I can get the frame to show the full image, but when i use gridlayout manager, it does that
public void addComponentsToPane(Container pane){
    BackgroundImage image = new BackgroundImage();
    JButton button1, button2, button3, button4, button5;
    pane.setLayout(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
    if(shouldFill){
        c.fill = GridBagConstraints.NONE;
    }   
    button1 = new JButton("Button 1");
    if (shouldWeightX) {
    c.weightx = 0.5;
    }
    c.fill = GridBagConstraints.HORIZONTAL;
    c.gridx = 1;
    c.gridy = 0;
    button1.setOpaque(false);
    pane.add(button1, c);
    button2 = new JButton("Button 2");
    c.fill = GridBagConstraints.HORIZONTAL;
    c.weightx = 0.5;    
    c.gridx = 0;
    c.gridy = 0;
    button2.setOpaque(false);
    pane.add(button2, c);
    button3 = new JButton("Button 3");
    c.fill = GridBagConstraints.HORIZONTAL;
    c.weightx = 0.5;
    c.gridx = 2;
    c.gridy = 0;
    button3.setOpaque(false);
    pane.add(button3, c);
    button4 = new JButton("Long-Named Button 4");
    c.fill = GridBagConstraints.HORIZONTAL;
    c.ipady = 40;      //make this component tall
    c.weightx = 0.0;
    c.gridwidth = 3;
    c.gridx = 0;
    c.gridy = 1;
    pane.add(button4, c);
    button5 = new JButton("button 1");
    c.fill = GridBagConstraints.HORIZONTAL;
    c.ipady = 0;       //reset to default
    c.weighty = 1.0;   //request any extra vertical space
    c.anchor = GridBagConstraints.PAGE_END; //bottom of space
    c.insets = new Insets(10,0,0,0);  //top padding
    c.gridx = 1;       //aligned with button 2
    c.gridwidth = 2;   //2 columns wide
    c.gridy = 2;       //third row
    pane.add(button5, c);
    c.ipadx = 800;
    c.ipady = 400;
    pane.add(image, c);
}
 This is what i'm trying to make it look like
This is what i'm trying to make it look like
© Stack Overflow or respective owner