concept JG22Network is Swingable { JPanel panel = jpanelWithoutLayoutManager(); G22Network network; *(G22Network *network) { for (element : network.elements) { var box = jMinSize(400, 300, jcenteredlabel("Drag or resize me!")); setBorder(box, BorderFactory.createLineBorder(Color.green, 10); onMouseDown(box, event -> { if (!mouseEventIsInBorder(event)) new ComponentDragger(box, event); }); new ComponentResizeDragger(box, box); var bounds = or(element.bounds, rect(50, 50, 400, 300)); setBounds(box, bounds); addToContainer(panel, box); } cachedVisualize panel; }