/** * Construct a canvas with the basic scene graph consisting of a root, * camera, and layer. Zooming and panning are automatically installed. */ public PCanvas() { cursorStack = new PStack(); setCamera(createDefaultCamera()); setDefaultRenderQuality(PPaintContext.HIGH_QUALITY_RENDERING); setAnimatingRenderQuality(PPaintContext.LOW_QUALITY_RENDERING); setInteractingRenderQuality(PPaintContext.LOW_QUALITY_RENDERING); setPanEventHandler(new PPanEventHandler()); setZoomEventHandler(new PZoomEventHandler()); setBackground(Color.WHITE); setOpaque(true); addHierarchyListener(new HierarchyListener() { public void hierarchyChanged(final HierarchyEvent e) { if (e.getComponent() == PCanvas.this) { if (getParent() == null) { removeInputSources(); } else if (isEnabled()) { installInputSources(); } } } }); }