// layouter: voidfunc(Container) or func(Container) -> Dimension // (return value is preferred size) static JPanel customLayoutPanel_trackWidth(fO layouter) { class P extends JPanel implements Scrollable { *() { super(layoutManagerFromFunction(layouter)); } @Override public Dimension getPreferredScrollableViewportSize() { ret getPreferredSize(); } @Override public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { return 20; } @Override public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) { ret (direction == SwingConstants.HORIZONTAL ? visibleRect.width : visibleRect.height)*5/6; } @Override public bool getScrollableTracksViewportWidth() { true; } @Override public boolean getScrollableTracksViewportHeight() { false; } } ret new P; }