Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7637365
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 31, 20262026-05-31T07:55:09+00:00 2026-05-31T07:55:09+00:00

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

  • 0

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;
} }
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-31T07:55:10+00:00Added an answer on May 31, 2026 at 7:55 am

    Your Connect class uses blocking I/O, which is preventing the init method from completing until after everything is downloaded. The Applet won’t render until at least after the init method returns. To allow the init method to return quickly, you could offload the download of resources to a background worker thread.

    See, for example, SwingWorker, which is a utility class designed to help do this kind of worker thread offloading correctly in a Swing GUI. It was introduced as part of standard Java in Java 6. If you need to support Java 5, you can find earlier versions of SwingWorker for download.


    Alternatively you could spawn your own thread. Just be sure to push GUI updates onto the AWT event dispatch thread.

    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...");
    
            final 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...");
    
            // UPDATE PROGRESS BAR //
            load.progressBar.setValue(15);
    
            Thread thread = new Thread() {
                public void run() {
                    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 //
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            load.progressBar.setValue(30);
                            load.lblNewLabel_1.setText("Checking for updates...");
                        }
                    });
    
                    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 //
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            load.progressBar.setValue(60);
                        }
                    });
    
                    if(UpdatesAvailable.startsWith("available")) {
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                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")) {
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                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")) {
                            SwingUtilities.invokeLater(new Runnable() {
                                public void run() {
                                    load.lblNewLabel_1.setText("Connecting...");
                                    load.progressBar.setValue(100);
                                }
                            });
    
                            // Join the game. Start game now. //
    
    
                        }
                        else if(loginStatus.startsWith("failed")) {
                            SwingUtilities.invokeLater(new Runnable() {
                                public void run() {
                                    load.lblNewLabel.setText("An error occured");
                                    load.lblNewLabel_1.setText("Login failed.");
                                }
                            });
                        }
                        else {
                            SwingUtilities.invokeLater(new Runnable() {
                                public void run() {
                                    load.lblNewLabel.setText("An error occured");
                                    load.lblNewLabel_1.setText("Failed to connect.");
                                }
                            });
                        }
                    }
                    else {
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                load.lblNewLabel.setText("An error occured");
                                load.lblNewLabel_1.setText("Failed to check updates.");
                            }
                        }
    
                    }
                }
    
                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 //
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        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 //
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        load.progressBar.setValue(60);
                    }
                });
    
                if(UpdatesAvailable.startsWith("available")) {
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            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")) {
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            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")) {
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                load.lblNewLabel_1.setText("Connecting...");
                                load.progressBar.setValue(100);
                            }
                        });
    
                        // Join the game. Start game now. //
    
    
                    }
                    else if(loginStatus.startsWith("failed")) {
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                load.lblNewLabel.setText("An error occured");
                                load.lblNewLabel_1.setText("Login failed.");
                            }
                        });
                    }
                    else {
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                load.lblNewLabel.setText("An error occured");
                                load.lblNewLabel_1.setText("Failed to connect.");
                            }
                        });
                    }
                }
                else {
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            load.lblNewLabel.setText("An error occured");
                            load.lblNewLabel_1.setText("Failed to check updates.");
                        }
                    });
                }
            }
            thread.start();
        }
        // ...
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

We have a Java Applet built using AWT. This applet lets you select pictures
I have developed an applet java with Eclipse, which is included in MyPage.html. I
I'm writing a Java applet for a small game. When a user doesn't have
I have a Java applet which displays an interactive map. By using the scroll
I am making a Java Applet right now. I have compiled with Java 1.5.
I have a Java applet related problem and I would appreciate your help. Here's
I have a Java Applet that uses AWT. In some (rare) circumstances, the platform
I have a Java applet that is meant to run only on Windows. (It
I have an Java applet that loads native code through JNI. Everything worked just
I have a java applet for uploading files to server. I want to display

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.