Na classe abaixo, gostaria de mostar a JTextArea a mensagem cfe. linha abaixo, durante a execução do arquivo teste.bat, mas só aparece no JtextArea depois que termina de executar o arquivo, daí aparecem todas as 94 linhas de uma vez.
O arquivo teste.bat copia 94 arquivos de um diretorio para outro e gostaria de listar no JTextArea os arquivos copiados enauqnto copia.
Alguém sabe como resolver?
saidaTexto.append("Aguarde copiando arquivo: “ + arquivo + " 94 " + line + newline);
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.Long;
import java.awt.BorderLayout;
import java.lang.Exception;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.String;
import javax.swing.JTextArea;
public class JTextoSaida extends JPanel implements ActionListener {
private JButton BCopiar;
public String line = null;
public JTextArea saidaTexto;
public String newline = "\n";
private Frame frame;
private Panel panel;
private Panel panel1;
JScrollPane scroller;
public JTextoSaida(String title) {
frame = new Frame(title);
BCopiar = new JButton("Iniciar Cópia" );
saidaTexto = new JTextArea(100, 120);
saidaTexto.setMargin(new Insets(20, 20, 20, 20));
saidaTexto.setEditable(false);
saidaTexto.setCursor(null);
panel = new Panel();
}
public void Copiar (){
int arquivo = 1;
Process process = null;
try {
process = Runtime.getRuntime().getRuntime()
.exec("\\teste\\java\\teste.bat");
BufferedReader in =
new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((line = in.readLine()) != null) {
saidaTexto.append("Aguarde copiando arquivo: “ + arquivo + " 94 " + line + newline);
arquivo = (arquivo + 1);
System.out.println(arquivo);
}
}catch (Exception e) {
System.out.println("Problema na copia: " +e.toString());
}
JOptionPane.showMessageDialog(null, "Copia finalizada", " OK PARA SAIR",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 ); // terminate the application
}
public void actionPerformed(ActionEvent evt) {
BCopiar.setEnabled(false);
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
Copiar();
}
public void createAndShowGUI() {
frame.setSize(400,400);
BCopiar.setActionCommand("copiar");
BCopiar.addActionListener(this);
saidaTexto.setMargin(new Insets(10,10, 10,10));
saidaTexto.setCursor(null);
panel.setSize(100,100);
panel.setLayout(new BorderLayout());
panel.add(BCopiar, BorderLayout.NORTH);
frame.add(panel, BorderLayout.CENTER);
panel.add(new JScrollPane(saidaTexto), BorderLayout.CENTER);
frame.setVisible(true);
}
public static void main(String[] args) {
JTextoSaida texto = new JTextoSaida("TESTE");
texto.createAndShowGUI();
}
}