views:

26

answers:

1

Hi, i'm not a java developer, but i need to write a small applet to upload file via ftp (actually, i'm a web developer). Everything works fine, except for the way that feedback messages are displayed. Let me explain with an example:

if i wrote sometingh like that, inside a method (controlled by a click event)

//....
myJpanel.setText("Connecting to remote server");

//actually, it's surrounded by try-catch statement
myFtpObject.connect(); //this is taken from a third part package 
myJpanel.setText("Connected")

When I try to run this code the connection is set (after that connection I upload files with no problem), but inside the Jpanel myJpanel I immeditaly read "connected" (altought it takes several seconds to connect) and I never see the "Connecting to remote server" string.

It sounds to me like the Jpanel setText method is buffered in some way.
How can I display messages in real time?

(I've tried to do System.out.println for testing and it worked great!)
Thanks

+1  A: 

if i wrote sometingh like that inside a method (controlled by a click event)

Code executed in an event listener executes on the EDT. The problem is that the long running task is blocking the Swing EDT. So the GUI never gets a chance to repaint itself.

Read the section from the Swing tutorial on Concurrency for more information and for a solution. The basic solution is to create a separate thread for the long running task.

This is also why System.out.println(..) works, because it executes on a different Thread.

camickr