I'm using GridBagLayout to place my GUI components by the following code, wanting the components lay one by one in a column, without any gaps :
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class TestGUI extends JFrame{ public TestGUI(){ JPanel bigPanel = new JPanel(new GridBagLayout()); JPanel panel_a = new JPanel(); JButton btnA = new JButton("button a"); panel_a.add(btnA); JPanel panel_b = new JPanel(); JButton btnB = new JButton("button b"); panel_b.add(btnB); GridBagConstraints c = new GridBagConstraints(); c.gridx = 0; c.gridy = 0; c.weighty = 1D; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.NORTH; bigPanel.add(panel_a, c); c.gridx = 0; c.gridy = 1; c.fill = GridBagConstraints.HORIZONTAL; bigPanel.add(panel_b, c); this.add(bigPanel); } public static void main(String[] args) { TestGUI gui = new TestGUI(); gui.setVisible(true); gui.pack(); } }
I wish the panels will be shown one by one in the column. but now i got this :

As i am going to add some more components in the bigPanel, and required some more customization to the layout, so i need to use GridBagLayout instead of other Layout.