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
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.