code: public void startRollingText()
      {        
      	for (int i = 0; i < INITIAL_TEXT.length(); i++)
      	{
      		StringBuilder sb = new StringBuilder(INITIAL_TEXT);
      		sb.insert(i + 1, "</font>");
      		sb.insert(i, "<font color=\"red\">");
      		sb.insert(0, "<html>");
      		sb.append("</html>");
      		rollingText[i] = sb.toString();
      	}
  
      	rollingTextThread = new Thread()
          {
      		Thread doRun = new Thread()
      		{
      			public void run()
      			{
      				label.setText(rollingText[textIndex]);
      			}
      		};
          	public void run()
          	{
          		while (true)
          		{
          			for (textIndex = 0; textIndex < rollingText.length; textIndex++)
          			{
          				try {
          					synchronized (this)
          					{
          						this.wait(150);
          					}
  						} catch (InterruptedException e) {
  							return;
  						}
          				SwingUtilities.invokeLater(doRun);
          			}
          		}
          	};
          };
          rollingTextThread.start();
      }
docs: Setup and start the rolling text.
  NOTE: This uses quick and dirty synchronization.