Mostrar saída do terminal em uma aplicação Java Desktop

2 respostas
H
Pessoal, gostaria de saber se é possivel simular um terminal do sitema numa aplicação que ultiliza swing em java, já que é possivel executar comandos do sistema. Tipo eu queria mostrar num JTextArea a saida de um "ping" por exemplo. No caso eu coloquei a saida padrão do sistema como sendo a JTextArea, como abaixo:
OutputStream out;
    public void Inicia(){
    out= new OutputStream(){
           
               public void write(byte[] b){
                   for(int i=0; i<b.length; i++){
                       write(b[i]);
                   }
               }

               public void write(int i){
                 jTextArea1.append(Character.toString((char) i));
               }


           };

    System.setOut(new PrintStream(out));
    }
Daí se eu der um System.out.println(x); Ele realmente imprime na Jtextarea "x", porém se eu fizer:
Runtime r = Runtime.getRuntime();
        Process p;
        
        try {
            p = r.exec("ping 192.168.254.254");
            p.waitFor();
        } catch (IOException ex) {
            System.out.println("Erro na execucao do comando:\n" + ex.getMessage());
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }

Ele não imprime o que seria mostrado no terminal. Alguém pode me ajudar?

2 Respostas

jaissonduarte

e ai cara consegui resolver
também preciso fazer isso
e como o tópico é de 2009 acho que já esta resolvido, não?

matheuslmota
jaissonduarte:
e ai cara consegui resolver também preciso fazer isso e como o tópico é de 2009 acho que já esta resolvido, não?

Faça assim:

Runtime r = Runtime.getRuntime();
        Process p;
        
        try {
            p = r.exec("ping 192.168.254.254");
            p.waitFor();
            InputStream input = p.getInputStream();
            int c;
            while((c = input.read()) != -1)
                    textArea.append(Character.toString((char) c));
        } catch (IOException ex) {
            System.out.println("Erro na execucao do comando:\n" + ex.getMessage());
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
Criado 14 de fevereiro de 2009
Ultima resposta 3 de mar. de 2012
Respostas 2
Participantes 3