Mi sembra anche giusto che avviene ciò....
Il primo problema sta nell'implementazione del metodo run in quanto devi effettuare un ciclo sull'input ricevuto per poter stampare tutto il contenuto dell'input stesso.
Anche implementando quest'ultimo cmq non avresti il risultato voluto in quanto vedresti stampato nella textArea solo alla fine del thread inquanto nel actionPerformed del bottone avvii il Thread richiamando il metodo Run più tosto che il metodo start.
Quindi per prima cosa modifichiamo l'action:
codice:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
pingthread obj=new pingthread(jTextArea2);
//obj.run(); Metodo sincrono
obj.start(); //Metodo asicrono
}
E infine implementiamo correttamente il metodo Run:
codice:
@Override
public void run()
{
try
{
String line = null;
while ((line = in.readLine()) != null)
{
jTextArea1.append(line.concat("\n"));
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
in.close();
}
catch (IOException e)
{
// IGNORED EXCEPTION
}
}
}