asclass JVolatileImageSurface > JComponent { VolatileImageMakerForComponent volatileImageMaker; abstract void renderVolatile(int w, int h, Graphics2D g); @Override public void render(int w, int h, Graphics2D g) { if (volatileImageMaker == null || !volatileImageMaker.sizeIs(w, h)) volatileImageMaker = new VolatileImageMakerForComponent(this, w, h, (_g, _w, _h) -> renderVolatile(_w, _h, _g)); volatileImageMaker.paintOnScreen(g) } }