title: JLabel and JTextField not updated with setText()
body: <p>In reference to <a href="https://stackoverflow.com/questions/25638165/multiplayer-java-game-program-freeze-when-starting-server-via-gui">Multiplayer Java game - program freeze when starting Server via GUI</a> , I used runnable and created a thread to solve the problem I had.</p>
  
  <p>I am now updating JLabel and JTextField but setText() alone is not doing the job. I believe it is due to the thread. I have read a few posts and understand I should be using SwingUtilities.invokeLater for updating of UI. </p>
  
  <p>Here is what I need to do and have tried:</p>
  
  <p>1) ServerFrame (UI JLabel and JTextField to be updated). It has the following method to do the updating. Do I need SwingUtilities.invokeLater here?</p>
  
  <pre><code>public static void setStatus (final String status) {
              System.out.println("set status from Fishing connect server frame: " + status);
              player1.setText(status);
              player1.repaint();
  }
  </code></pre>
  
  <p>2) Server (This is my game server where I have a method to invoke setStatus in item 1 for updating) and SwingUtilities.invokeLater.</p>
  
  <pre><code>public static void setStatus (final String status) {
  
          SwingUtilities.invokeLater(new Runnable() { 
          public void run()
          {
              FishingGameServerFrame.setStatus(status);
          }
      });
      }
  </code></pre>
  
  <p>3) Item 1 object was initiate through runnable thread in GameConnectServerFrame</p>
  
  <pre><code>start.addActionListener (new ActionListener() {
  
              public void actionPerformed (ActionEvent event) {
                  DEFAULT_PORT = Integer.parseInt(port.getText());
  
                  Runnable r = new Runnable() {
  
                      @Override
                      public void run() {
                          // TODO Auto-generated method stub
                          fgServer.run();
                          fgServerFrame = new FishingGameServerFrame();
                      }
                  };
                  new Thread(r).start();
                  frame.setVisible(false);
              }
          });
  </code></pre>
  
  <p>The above codes does not have any compilation error but UI still not updated.
  May I know which is more appropriate to use SwingUtilities.invokeLater? Item 1 or 2? Or I am doing it all wrong?</p>