JFrame + JOGL only displays content when resized or minimised + maximised
I'm currently experimenting with JOGL, and I ran into a problem which is really new to me. After starting the program, I see a blank window. After resize, I can normally see the content of it or if I do a minimise/restore. I suppose there is something with the events. The *init()* isn't called after the window created, but after the first trigger with resize or minimise. 

Here is the code what I'm using for creating a window and setting up OpenGL:

    package com.cogwheel.framework.graphics;

    import java.awt.BorderLayout;

    import javax.media.opengl.GL;
    import javax.media.opengl.GL2;
    import javax.media.opengl.GLAutoDrawable;
    import javax.media.opengl.GLCapabilities;
    import javax.media.opengl.GLEventListener;
    import javax.media.opengl.awt.*;
    import javax.swing.JFrame;

    import com.cogwheel.framework.init.CWGPreferences;
    import com.cogwheel.framework.util.CWGDebug;
    import com.jogamp.opengl.util.Animator;

    public class CWGOpenGLScreen extends JFrame implements GLEventListener {
	private static final String TAG = "CWGOpenGLScreen";
	
	private GLCanvas mCanvas;
	private long fpsLast = System.currentTimeMillis();
	
	public CWGOpenGLScreen(){
		this.setTitle(CWGPreferences.WINDOW_NAME);
		this.setSize(CWGPreferences.WINDOW_SIZE);
		this.setLayout(new BorderLayout());
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		///this.setResizable(false);
		this.setVisible(true);
		
		CWGDebug.info(TAG, "Window created!");
		
		CWGSetupGL();
	}
	private void CWGSetupGL(){
		GLCapabilities mCaps = new GLCapabilities(null);
		mCaps.setHardwareAccelerated(true);
		mCaps.setDoubleBuffered(true);
		
		mCanvas = new GLCanvas(mCaps);
		mCanvas.addGLEventListener(this);
		
		this.add(mCanvas, BorderLayout.CENTER);
		
		Animator animator = new Animator(mCanvas);
		animator.start();
	}
	
	public void CWGDrawScene(GLAutoDrawable drawable)
	{
		CWGCalculateFPS();
		
		GL2 gl = drawable.getGL().getGL2();
		gl.glClear(GL.GL_COLOR_BUFFER_BIT);
		gl.glLoadIdentity();
		
		
		gl.glBegin(GL.GL_TRIANGLES);
			gl.glColor3f(1.0f, 0.0f, 0.0f);
			gl.glVertex3f(1.0f / 5 , 0.0f, 0.0f);
			
			gl.glColor3f(0.0f, 1.0f, 0.0f);
			gl.glVertex3f(1.0f / 5, 1.0f / 5, 0.0f);
			
			gl.glColor3f(0.0f, 0.0f, 1.0f);
			gl.glVertex3f(0.0f, 1.0f / 5, 1.0f / 5);
		gl.glEnd();
		gl.glFlush();
	}
	
	public void CWGCalculateFPS(){
		this.setTitle(CWGPreferences.WINDOW_NAME + " [" + 1000 / (System.currentTimeMillis() - fpsLast) + "]");
		fpsLast = System.currentTimeMillis();
	}
	
	public void init(GLAutoDrawable drawable){
		 	/*GL2 gl = drawable.getGL().getGL2();

		    gl.glClearColor(0, 0, 0, 0);
		    gl.glMatrixMode(GL2.GL_PROJECTION);
		    gl.glLoadIdentity();
		    gl.glOrtho(0, 1, 0, 1, -1, 1);
		    */
		    CWGDebug.info(TAG, "Init called!");
	}
	public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height){}
	public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged){}
	public void display(GLAutoDrawable drawable){ CWGDrawScene(drawable); }
	public void dispose(GLAutoDrawable drawable){}
}

Code quality is poor, I know, had no time to cleanup yet. Sorry for it.
JFrame + JOGL only displays content when resized or minimised + maximised
===

I'm currently experimenting with JOGL, and I ran into a problem which is really new to me. After starting the program, I see a blank window. After resize, I can normally see the content of it or if I do a minimise/restore. I suppose there is something with the events. The *init()* isn't called after the window created, but after the first trigger with resize or minimise. 

Here is the code what I'm using for creating a window and setting up OpenGL:

    package com.cogwheel.framework.graphics;

    import java.awt.BorderLayout;

    import javax.media.opengl.GL;
    import javax.media.opengl.GL2;
    import javax.media.opengl.GLAutoDrawable;
    import javax.media.opengl.GLCapabilities;
    import javax.media.opengl.GLEventListener;
    import javax.media.opengl.awt.*;
    import javax.swing.JFrame;

    import com.cogwheel.framework.init.CWGPreferences;
    import com.cogwheel.framework.util.CWGDebug;
    import com.jogamp.opengl.util.Animator;

    public class CWGOpenGLScreen extends JFrame implements GLEventListener {
	private static final String TAG = "CWGOpenGLScreen";
	
	private GLCanvas mCanvas;
	private long fpsLast = System.currentTimeMillis();
	
	public CWGOpenGLScreen(){
		this.setTitle(CWGPreferences.WINDOW_NAME);
		this.setSize(CWGPreferences.WINDOW_SIZE);
		this.setLayout(new BorderLayout());
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		///this.setResizable(false);
		this.setVisible(true);
		
		CWGDebug.info(TAG, "Window created!");
		
		CWGSetupGL();
	}
	private void CWGSetupGL(){
		GLCapabilities mCaps = new GLCapabilities(null);
		mCaps.setHardwareAccelerated(true);
		mCaps.setDoubleBuffered(true);
		
		mCanvas = new GLCanvas(mCaps);
		mCanvas.addGLEventListener(this);
		
		this.add(mCanvas, BorderLayout.CENTER);
		
		Animator animator = new Animator(mCanvas);
		animator.start();
	}
	
	public void CWGDrawScene(GLAutoDrawable drawable)
	{
		CWGCalculateFPS();
		
		GL2 gl = drawable.getGL().getGL2();
		gl.glClear(GL.GL_COLOR_BUFFER_BIT);
		gl.glLoadIdentity();
		
		
		gl.glBegin(GL.GL_TRIANGLES);
			gl.glColor3f(1.0f, 0.0f, 0.0f);
			gl.glVertex3f(1.0f / 5 , 0.0f, 0.0f);
			
			gl.glColor3f(0.0f, 1.0f, 0.0f);
			gl.glVertex3f(1.0f / 5, 1.0f / 5, 0.0f);
			
			gl.glColor3f(0.0f, 0.0f, 1.0f);
			gl.glVertex3f(0.0f, 1.0f / 5, 1.0f / 5);
		gl.glEnd();
		gl.glFlush();
	}
	
	public void CWGCalculateFPS(){
		this.setTitle(CWGPreferences.WINDOW_NAME + " [" + 1000 / (System.currentTimeMillis() - fpsLast) + "]");
		fpsLast = System.currentTimeMillis();
	}
	
	public void init(GLAutoDrawable drawable){
		 	/*GL2 gl = drawable.getGL().getGL2();

		    gl.glClearColor(0, 0, 0, 0);
		    gl.glMatrixMode(GL2.GL_PROJECTION);
		    gl.glLoadIdentity();
		    gl.glOrtho(0, 1, 0, 1, -1, 1);
		    */
		    CWGDebug.info(TAG, "Init called!");
	}
	public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height){}
	public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged){}
	public void display(GLAutoDrawable drawable){ CWGDrawScene(drawable); }
	public void dispose(GLAutoDrawable drawable){}
}

Code quality is poor, I know, had no time to cleanup yet. Sorry for it.