Ciao a tutti. Nella mia applicazione java devo inviare un file ad un server ftp. Durante il trasferimento vorrei mostrare in una JTextField le operazioni effettuate, ad esempio connessione al server, trasferimento file, chiusura della connessione ecc ecc. Ho una classe in cui è presente un Jpanel con la JTexField tLoading;da questa classe chiamo il metodo statico upload di un'altra classe chiamata FileUpload passando come parametri oltre a quelli necessari per trasferire il file anche la textField tLoading. Questo è il metodo upload
codice:
public static void upload( String ftpServer, String user, String password,String fileName, File source,JTextField tLoading ) throws MalformedURLException,IOException{
if (ftpServer != null && fileName != null && source != null){
tLoading.setText("Connessione al server");
StringBuffer sb = new StringBuffer( "ftp://" );
// check for authentication else assume its anonymous access.
if (user != null && password != null){
sb.append( user );
sb.append( ':' );
sb.append( password );
sb.append( '@' );
}
sb.append( ftpServer );
sb.append( '/' );
sb.append( fileName );
/*
* type ==> a=ASCII mode, i=image (binary) mode, d= file directory
* listing
*/
sb.append( ";type=i" );
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try{
tLoading.setText("Trasferimento file "+source.getName());
System.out.println("Trasferimento file "+source.getName());
URL url = new URL( sb.toString() );
URLConnection urlc = url.openConnection();
bos = new BufferedOutputStream( urlc.getOutputStream() );
bis = new BufferedInputStream( new FileInputStream( source ) );
int i;
// read byte by byte until end of stream
while ((i = bis.read()) != -1){
bos.write( i );
}
}
finally{
tLoading.setText("Chiusura connessione al server");
System.out.println("Chiusura connessione al server");
if (bis != null)
try{
bis.close();
}
catch (IOException ioe){
ioe.printStackTrace();
}
if (bos != null)
try{
bos.close();
}
catch (IOException ioe){
ioe.printStackTrace();
}
}
tLoading.setText("");
}
else{
System.out.println( "Input not available." );
}
}
Non capisco come mai la textfield resta invariata ho anche provato a chiamare repaint dopo setText, ma nulla. Mi sembra una cosa molto semplice ma davvero non so più cosa provare... Qualche idea? Grazie a tutti in anticipo.