Q:

Java GUI shows blank until resize

I have written a java gui code for many options available on it. the gui is also set visible true but it doesn't show until I pick its border and drag them to resize the gui window. After manually resizing it, it shows everything. Also, the textlabels and the textfields and buttons are not in new lines, they are placed one after one. Please tell me whats wrong with that: here is a part of code: 
public static void initGUI(){
        JFrame fr = new JFrame(); 
        Container cont = fr.getContentPane();
        cont.setLayout( new FlowLayout( ) );    
        FlowLayout layout = new FlowLayout(); 
        cont.setLayout(layout); 
        frame.setSize(200,300) ;
        frame.setVisible(true) ;

        JTextField tName = new JTextField(30); 
        JTextField tCNIC = new JTextField(15); 

        JLabel nameLabel = new JLabel("Name:");
        JLabel cnicLabel = new JLabel("CNIC #:");

        cont.add(nameLabel);
        cont.add(tName);
        cont.add(cnicLabel);
        cont.add(tCNIC);

        JButton Cancel = new JButton ("Canel" );
        JButton OK = new JButton ("OK" );
        savebtn.setPreferredSize(new Dimension(150, 50));
        retbtn.setPreferredSize(new Dimension(150, 50));
        cont.add(savebtn);
        cont.add(retbtn);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    }

A:

frame.setVisible(true) ;

The above statement should be invoked AFTER all the components have been added to the frame. So it should be the last statement in your method.
Also, you should be invoking:
frame.pack();

instead of setSize(), before making the frame visible so all the components are displayed at their preferred size.

