Che è sbagliato perché stai bloccando il EDT.Originariamente inviato da Macgiglio
1. prima di process p2 scrivere qualcosa del genere p1.waitfor();
Se attendi anche qui il risultato in modo "sincrono", blocchi comunque lo stesso il EDT.Originariamente inviato da Macgiglio
2. modificare la funzione pexecute in modo che implementa Callable() e con una variabile Future aspetto l'uscita del valore desiderato.
Se è questo quello che vuoi, allora devi cambiare un po' le cose. In actionPerformed() dovresti creare un tuo thread (lascia perdere StreamGobbler & company) al cui interno, stavolta in modo "sincrono", lanci il processo, leggi il suo output, attendi la fine ecc....Originariamente inviato da Macgiglio
devo aspettare che il processo p1 finisca visto che mi serve il valore che andra a scrivere sulla JLabel mess1 per eseguire il processo p2.
E quando avrai finito o comunque quando devi mostrare qualcosa, lo devi fare nel contesto del EDT, quindi usando SwingUtilities.invokeLater().
P.S. Tra l'altro StreamGobbler, che è un thread a parte, non è proprio correttissimo .... vengono fatti dei setText() sulla label .... che è sbagliato perché tale operazione andrebbe fatta solo nel contesto del EDT, non da un qualunque altro thread.