Performance problem loading XML message on a applet in order to display them on a text scroll view.

Hi,
   I got a problem trying to load XML messages from a URL on an Applet update() method. The applet is used to diaply a text scroll; what happes is when the update method is called (because the current messages are about to passed) is freezing the scrolling effect for a sec. Any ideas how I can handle this?

Regards,

Carlos M.  
public synchronized void update(Graphics g) {
		
		int limit = theListOfList.size();
		for (int n = 0;n<limit;n++){ 
		 
			for (Message m : theListOfList.elementAt(n).messages) {
				m.X--;
				
				
				
			}
			if ((theListOfList.elementAt(n).messages.lastElement().X + theListOfList.elementAt(n).messages.lastElement().messageSize)- totalLarge == theListOfList.elementAt(n).totalListBufferSize) {
 
			
				currentListPoss = nextListPoss;
				
				loadMessages(theListOfList.elementAt(n).messages.lastElement().X+ theListOfList.elementAt(n).messages.lastElement().messageSize);
            
			}
 
		}
		
 
		 paint(g);
	}
 
 
This is the loadmessages method:
 
public synchronized void loadMessages(int X) {
		System.out.println(currentListPoss);
		ListOfMessages currentList = new ListOfMessages();
		
 
		try {
			
			DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
					.newInstance();
			DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
			Document doc = docBuilder
					.parse("http://65.38.219.91/29960/test/getmessages2.php");
			NodeList listOfitems = doc.getElementsByTagName("item");
 
			for (int s = 1; s < listOfitems.getLength(); s++) {
 
				Node item = listOfitems.item(s);
				receiver.add(item.getTextContent().trim());
 
			}// end of for loop with s var
 
		} catch (SAXParseException err) {
		
 
		} catch (SAXException e) {
			Exception x = e.getException();
			// System.out.println(e);
			((x == null) ? e : x).printStackTrace();
 
		} catch (Throwable t) {
			t.printStackTrace();
			// System.out.println(t);
		}
		
 
 
         int i =0;
		for (String s : receiver) {
			
			Message currentMsg = new Message(s, X);
			
			
			currentList.messages.add(generateImg(currentMsg));
			currentList.totalListSize += currentMsg.messageSize;
			
			X = X + currentMsg.messageSize;
			
			i++;
		}
		currentList.totalListBufferSize = (int) (currentList.totalListSize * 0.30);
 
		theListOfList.add(currentListPoss, currentList);
		if (currentListPoss == messageQueueLimit - 1) {
			nextListPoss = 0;
		} else {
			nextListPoss = currentListPoss + 1;
 
		}
 
	}

Open in new window

cmercado_mirandaAsked:
Who is Participating?
 
objectsCommented:
you need to handle the loading of xml in a seperate thread.
0
 
cmercado_mirandaAuthor Commented:
How can I do that, any example of calling a tread on a applet?
0
All Courses

From novice to tech pro — start learning today.