Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Placing buttons in a specified location using swing in java

I am trying to learn how to make JAVA programs and I am working with Swing. I am trying to place a button in the top left corner of the window and it keeps going to the top center.

public void createGUI(){
    JFrame frame = new JFrame("My Project");
    frame.setDefaultCloseOperation(3);
    frame.setSize(400, 350);
    frame.setVisible(true);

    JPanel panel = new JPanel();

    frame.add(panel);

    addButtonGUI(panel, new JButton(), "test", 1, 1);
}

public void addButtonGUI(JPanel panel, JButton button, String text, int x, int y){
    GridBagConstraints gbc = new GridBagConstraints();
    button.setText(text);
    button.setEnabled(true);
    gbc.gridx = x;
    gbc.gridy = y;
    gbc.gridwidth = 2;
    gbc.weightx = 1.0D;
    gbc.fill = 2;
    panel.add(button, gbc);
}

What am I doing wrong or is there a better way to do this? Please help

like image 403
Michael Guercia Avatar asked Dec 13 '12 19:12

Michael Guercia


2 Answers

You need to set the layout of the JPanel to GridBagLayout to use GridBagConstraints:

JPanel panel = new JPanel(new GridBagLayout());

Also as you only have one effective 'cell' you need to use an anchor and set weighty for the JButton to allow movement in the Y-axis.

gbc.anchor = GridBagConstraints.NORTHWEST;
gbc.weighty = 1.0;

Also I would set the fill setting to NONE:

gbc.fill = GridBagConstraints.NONE;

so that the button does not occupy the full width of the panel. (2 = HORIZONTAL fill).

like image 179
Reimeus Avatar answered Nov 12 '22 12:11

Reimeus


instead of

addButtonGUI(panel, new JButton(), "test", 1, 1);
}

what would happen if you used

addButtonGUI(panel, new JButton(), "test", 0, 0);
}
like image 40
Kailua Bum Avatar answered Nov 12 '22 12:11

Kailua Bum