static int vstackWithSpacing_default = 10; static JPanel vstackWithSpacing(fL parts) { ret vstackWithSpacing(parts, vstackWithSpacing_default); } static JPanel vstackWithSpacing(fL parts, final int spacing) { ret swing(func -> JPanel { 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+1)/2, 0); // well... smartAddWithLayout(panel, gbc, toObjectArray(nonNulls(parts))); //gbc = (GridBagConstraints) gbc.clone(); //gbc.fill = GridBagConstraints.BOTH; gbc.weighty = 1; gbc.insets = new Insets(0, 0, 0, 0); panel.add(jrigid(), gbc); ret panel; }); } static JPanel vstackWithSpacing(Component... parts) { ret vstackWithSpacing(asList(parts), vstackWithSpacing_default); } static JPanel vstackWithSpacing(int spacing, Component... parts) { ret vstackWithSpacing(asList(parts), spacing); }