//please include function withMargin. static int showForm_defaultGap = 4; static int showForm_gapBetweenColumns = 10; static JPanel showFormTitled(fS title, fO... _parts) { ret swing(func -> JPanel { final new Var frame; JPanel panel = showForm_makePanel(frame, _parts); frame.set(handleEscapeKey(minFrameWidth(showPackedFrame(title, withMargin(panel)), 400))); ret panel; }); } static JPanel showForm_makePanel(final Var frame, O... _parts) { Pair, Runnable> p = showForm_makeComponents(frame, _parts); LL l = p.a; Runnable submit = p.b; int minW = 0; for (L row : l) { JComponent left = first(row); if (left instanceof JLabel) makeBold((JLabel) left).setVerticalAlignment(JLabel.TOP); minW = max(minW, getMinimumSize(left).width); } new L out; for (L row : l) { JComponent left = first(row); out.add(westAndCenter(withRightMargin(showForm_gapBetweenColumns, jMinWidth(minW, left)), second(row))); } JPanel panel = vstackWithSpacing(out, showForm_defaultGap); onEnterInAllTextFields(panel, submit); ret panel; }