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: 267

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 whats it looks like currently 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 get it to look like This is what i'm trying to make it look like

© Stack Overflow or respective owner

Related posts about java

Related posts about swing