Ciao a tutti,
ho sviluppato una web applet che si occupa di mandare in stampa dei pdf.
Il mio problema è il seguente:
Quando cliccko un pulsante (JButton), nel metodo ActionPerformed() rendo lo stesso pulsante cliccato READONLY e modifico un pannello presente nell'applet per informare l'utente circa l'attesa della stampa del pdf...successivamente parte il metodo che si occupa di mandare in stampa il documento (il quale impiega qualche secondo prima di terminare l'esecuzione). Il problema però è che il pulsante diventa readonly solo dopo che il metodo che manda in stampa il documento è terminato..anche il pannello modificato si aggiorna solo al termine della stampa.

codice:
public void actionPerformed(ActionEvent e) {
		String command = e.getActionCommand();
        
		if (STAMPA_COMMAND.equals(command)) {
		
			stampa.setEnabled(false);
			JPanel areaPrint =  new JPanel();
			JLabel lab = new JLabel("Wait Printing...");
			areaPrint.setBackground(Color.magenta);
			areaPrint.add(lab);
			scrollArea.getViewport().add(areaPrint); // Quì ho il problema!...il pannello non viene aggiornato prima del ciclo for, ma solo al termine di questo
			scrollArea.validate();
			scrollArea.repaint();
			
			try {
				PrintPdf printPDFFile;
				ArrayList assegniDaStampare = new ArrayList();
			
	for(int i=0;i<assegni.size();i++){	
		DatiAssegno datiAss = (DatiAssegno) assegni.get(i);
	
		if(datiAss!=null && datiAss.getStatoAssegno().equals(STATUS_OK)){				
						printPDFFile = new PrintPdf("Stampa Assegni", datiAss);
	
						printPDFFile.print();
						
						String servletLocation = "http://localhost/Servlet";
						
						//		   connect to the servlet 
	
							URL studentDBservlet = new URL( servletLocation ); 
							URLConnection servletConnection = studentDBservlet.openConnection(); 
							servletConnection.setUseCaches (false); 
							servletConnection.setDefaultUseCaches(false); 
							servletConnection.setDoInput(true);
							servletConnection.setDoOutput(true);
	
							OutputStream outstream = servletConnection.getOutputStream();
							ObjectOutputStream oos = new ObjectOutputStream(outstream);
							oos.writeObject(datiAss.idAssegno);
							oos.flush();
							oos.close();
	
							ObjectInputStream inputFromServlet = new ObjectInputStream(servletConnection.getInputStream());
							try {
								String statusSave = (String)inputFromServlet.readObject();
							} catch (ClassNotFoundException e4) {
								e4.printStackTrace();
							}
				
					}
			}							
				JPanel areaPrint2 =  new JPanel();
				JLabel lab2 = new JLabel("Print Complete");
				areaPrint2.setBackground(Color.green);
				areaPrint2.add(lab2);
				scrollArea.getViewport().add(areaPrint2);
			} catch (FileNotFoundException e1) {				
					//do something
			} catch (IOException e2) {			
					//do something
			}  catch (PrinterException e3) {			
					//do something
			}
		} 

		if (EXIT_COMMAND.equals(command)) {		
			JSObject win = JSObject.getWindow(appletParent);
			appletParent.stop();
			appletParent.destroy();
			win.eval("self.close()");
		} 
	}

Sapete darmi qualche indicazione utile per risolvere questo problema? Grazie mille!