Figure 8: The MessageTask class

class MessageTask implements Runnable {
   String message;
   // Cache the message
   MessageTask (String message) {
      this.message = message;
   }
   // Add the message to the list's model and ensure it is visible
   public void run() {
      SwingClient.this.listModel.addElement(message);
      SwingClient.this.list.ensureIndexIsVisible
         (SwingClient.this.listModel.getSize()-1);
   }
}