public void createCanvas() {
        if (context != null && context.isCreated()) {
            logger.warning("createCanvas() called when application already created!");
            return;
        }

        if (settings == null) {
            settings = new AppSettings(true);
        }

        if (logger.isLoggable(Level.FINE)) {
            logger.log(Level.FINE, "Starting application: {0}", getClass().getName());
        }
        context = JmeSystem.newContext(settings, JmeContext.Type.Canvas);
        context.setSystemListener(this);
    }
Initializes the application's canvas for use.
<p>
After calling this method, cast the {@link #getContext()} context to
JmeCanvasContext,
then acquire the canvas with JmeCanvasContext.getCanvas()
and attach it to an AWT/Swing Frame.
The rendering thread will start when the canvas becomes visible on
screen, however if you wish to start the context immediately you
may call {@link #startCanvas() } to force the rendering thread
to start.

@see Type#Canvas
jme3-core/src/main/java/com/jme3/app/LegacyApplication.java