static int vstackWithSpacing_default = 10; static JPanel vstackWithSpacing(L parts, int spacing) { JPanel panel = new JPanel(new GridBagLayout); new GridBagConstraints gbc; gbc.weightx = 1; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.insets = new Insets(spacing/2, 0, spacing/2, 0); // well... smartAddWithLayout(panel, gbc, toObjectArray(parts)); //gbc = (GridBagConstraints) gbc.clone(); //gbc.fill = GridBagConstraints.BOTH; gbc.weighty = 1; gbc.insets = new Insets(0, 0, 0, 0); panel.add(Box.createRigidArea(new Dimension(0, 0)), gbc); ret panel; } static JPanel vstackWithSpacing(Component... parts) { ret vstackWithSpacing(asList(parts), vstackWithSpacing_default); }