¿Cómo mostrar una imagen en un marco?

Estoy codificando una interfaz gráfica de usuario y quería usar incrustar algunas imágenes, pero antes de insertarla en mi programa principal escribí ese código para probarlo:

    public class guikopie extends javax.swing.JFrame{
        public guikopie() {
            a = new javax.swing.JLabel();
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            a.setIcon(new javax.swing.ImageIcon("C:\\Users\\Public\\Pictures\\Sample Pictures\\Tulpen.jpg"));       
            add(a);//here i add it to the jlabel
            pack();
        }

        public static void main(String args[]){
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new guikopie().setVisible(true);
                }
            });
        }

        private javax.swing.JLabel a;
    }

Mi pregunta es: ¿Por qué este código no muestra la imagen?

Respuestas a la pregunta(2)

Su respuesta a la pregunta