Java Applet GUI doesn't display until the applet completes downloading

I have a Java Applet compiled in Eclipse using Swing. See here: http://www.test.world2build.com/Game/Play.aspx

For the start of the applet, I made a "Loading..." dialog that would login and download updates. This applet contains three classes:

  • MainApplet
  • LoadingDialog
  • Connect

MainApplet.class

public class MainApplet extends JApplet {
public MainApplet() {
}
public void init() {
    // constructor 

    setSize(800,600);
    getContentPane().setLayout(null);

    AppSettings AppSettings = new AppSettings();
    AppSettings.Username = GetParameter(0);
    AppSettings.Password = GetParameter(1);
    AppSettings.ClientMode = GetParameter(2);
    AppSettings.ServerIP = GetParameter(3);

    System.out.println("Main applet loaded.");
    System.out.println("Starting load...");

    LoadingDialog load = new LoadingDialog();
    load.setVisible(true);
    getContentPane().add(load);

    int panelX = (getWidth() - load.getWidth() - getInsets().left - getInsets().right) / 2;
    int panelY = ((getHeight() - load.getHeight() - getInsets().top - getInsets().bottom) / 2);
    load.setLocation(panelX, panelY);



    load.lblNewLabel_1.setText("Connecting...");

    //wait(2);

    // UPDATE PROGRESS BAR //
    load.progressBar.setValue(15);

    Connect connect = new Connect();
    String Result = null;
    try {
        Result = connect.Read("http://www.world2build.com/");
    } catch (IOException e) {
        e.printStackTrace();
    }

    if(Result == null) {
        return;
    }

    // UPDATE PROGRESS BAR //
    load.progressBar.setValue(30);

    load.lblNewLabel_1.setText("Checking for updates...");

    //wait(1);

    String UpdatesAvailable = "null";

    try {
        UpdatesAvailable = connect.Read("http://test.world2build.com/Game/CheckUpdates.aspx?v=" + AppSettings.Version);
    } catch (IOException e) {
        e.printStackTrace();
    }

    // UPDATE PROGRESS BAR //
    load.progressBar.setValue(60);

    if(UpdatesAvailable.startsWith("available")) {
        load.lblNewLabel.setText("Updating, please wait...");
        load.lblNewLabel_1.setText("Downloading...");

        URL url;
        try {
            url = new URL("http://www.world2build.com/Game/WorldToBuild.zip");

            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            InputStream in = connection.getInputStream();
            FileOutputStream out = new FileOutputStream(System.getenv("APPDATA") + "download.zip");
            copy(in, out, 1024);
            out.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    else if(UpdatesAvailable.startsWith("unavailable")) {
        load.lblNewLabel.setText("Please wait...");
        load.lblNewLabel_1.setText("Logging in...");
        String loginStatus = null;

        try {
            loginStatus = connect.Read(
                    "http://test.world2build.com/Game/Login.ashx?u="
                    + AppSettings.Username + "&p="
                    + AppSettings.Password + "&sip="
                    + AppSettings.ServerIP);
        } catch (IOException e) {
            e.printStackTrace();
        }

        if(loginStatus.startsWith("success")) {
            load.lblNewLabel_1.setText("Connecting...");
            load.progressBar.setValue(100);

            // Join the game. Start game now. //


        }
        else if(loginStatus.startsWith("failed")) {
            load.lblNewLabel.setText("An error occured");
            load.lblNewLabel_1.setText("Login failed.");
        }
        else {
            load.lblNewLabel.setText("An error occured");
            load.lblNewLabel_1.setText("Failed to connect.");
        }
    }
    else {
        load.lblNewLabel.setText("An error occured");
        load.lblNewLabel_1.setText("Failed to check updates.");
    }
}
public static void copy(InputStream input, OutputStream output, int bufferSize) throws IOException {
    byte[] buf = new byte[bufferSize];
    int n = input.read(buf);
    while (n >= 0) {
      output.write(buf, 0, n);
      n = input.read(buf);
    }
    output.flush();
 }
 public static void wait(int n){
    long t0, t1;
    t0 =  System.currentTimeMillis();
    do{
        t1 = System.currentTimeMillis();
    }
    while ((t1 - t0) < (n * 1000));
}
public String GetParameter(int Index) {
    String Parameters = null;
    String[] Stuff = null; 

    try {
        Parameters = this.getParameter("data");
        Stuff = Parameters.split(" ");

        return Stuff[Index];
    } catch(NullPointerException e) {
        e.printStackTrace();
    }

    // Username         Password        ServerMode       IP
    Parameters = "Bailey 1f6311d6446e2a3fa08a1c08187129ad false 127.0.0.1:45565";
    Stuff = Parameters.split(" ");

    return Stuff[Index];
} }

LoadingDialog.class

public class LoadingDialog extends JApplet {

public JPanel frame = new JPanel();

public JProgressBar progressBar;
public JLabel lblNewLabel_1;
public JLabel lblNewLabel;
private JPanel panel;

public LoadingDialog() {
    getContentPane().setFocusable(false);
    frame.setBorder(new LineBorder(new Color(0, 0, 0)));
    setSize(350,150);
    frame.setSize(350,150);
    getContentPane().setLayout(null);
    setVisible(true);
    progressBar = new JProgressBar();
    progressBar.setVerifyInputWhenFocusTarget(false);
    progressBar.setOpaque(true);
    progressBar.setBounds(10, 51, 322, 19);
    getContentPane().add(progressBar);

    lblNewLabel = new JLabel("Please wait...");
    lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 14));
    lblNewLabel.setBounds(24, 11, 308, 29);
    getContentPane().add(lblNewLabel);

    lblNewLabel_1 = new JLabel("Checking for updates...");
    lblNewLabel_1.setForeground(UIManager.getColor("InternalFrame.borderDarkShadow"));
    lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
    lblNewLabel_1.setHorizontalTextPosition(SwingConstants.RIGHT);
    lblNewLabel_1.setBounds(10, 76, 322, 19);
    getContentPane().add(lblNewLabel_1);



    int panelX = (getWidth() - frame.getWidth() - getInsets().left - getInsets().right) / 2;
    int panelY = ((getHeight() - frame.getHeight() - getInsets().top - getInsets().bottom) / 2);
    frame.setBounds(350, 150, panelX, panelY);

    frame.setVisible(true);
} }

For some odd reason, in MainApplet where it gets the contents of URLs using the Connect class (see below), the Applet does not show the LoadingDialog GUI until all is complete.

Connect.class

public class Connect {
public String Read(String theurl) throws IOException {
    URL url = new URL(theurl);

    // Read all the text returned by the server
    BufferedReader in;
    try {
        in = new BufferedReader(new InputStreamReader(url.openStream()));
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
    String str = in.readLine();
    String newstr = "...";

    while(newstr != null) {
        newstr = in.readLine();
        if(newstr == null) {
            break;
        }
        else {
            str += newstr;
        }
    }

    in.close();
    return str;
} }
Answer:1

How to check if a web page has been opened by a mobile browser or a computer browser. I tried this : name = request.getHeader("User-Agent"); But it gives these type of results : For Fedora Firefox ...

Here's some context: I'm working on an assignment to collapse an edge in a mesh that is stored half-edge data structure. This is the immediately relevant code. System.out.println("Initial Size: " ...

I'm trying to write custom JFrame and JPanel for my Java application. Currently, I just want to have a JPanel with a start button in the very middle of the screen. So, here's the code I have: package ...

We're thinking of using Protocol Buffers for binary logging because: It's how we're encoding our objects anyway It is relatively compact, fast to read / write etc. That said, it isn't obvious how we ...