// layouter: voidfunc(Container) or func(Container) -> Dimension // (return value is preferred size) static JPanel customLayoutPanel(fO layouter) { ret jpanel(new AbstractLayoutManager { public void layoutContainer(Container parent) { Dimension size = cast callF(layouter, parent); if (size != null) preferredSize = size; } }); }