2015-06-04 3 views
0

У меня есть определенный код, который предположительно запускает командный файл. Я не уверен, хотя, потому что он ничего не показывает в консоли, но когда я нажимаю JButton PING, кнопка удерживается нажатой в течение нескольких секунд, поэтому она определенно что-то обрабатывает. Мне нужна помощь в выводе командного файла в JTextArea в моем графическом интерфейсе. Я не уверен, как направить мой код на мой JTextArea, называемый «textarea». Может ли кто-нибудь показать мне, как вы добавите textarea в этот код, чтобы получить результат? Благодаря!Вывод командного файла в JTextArea

JButton btnPingComputer = new JButton("PING"); 
    btnPingComputer.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      try { 
        // create a new process 
       // System.out.println("Creating Process..."); 
        Process p = Runtime.getRuntime().exec("c:\\ping.bat"); 

        // get the input stream of the process and print it 
        InputStream in = p.getInputStream(); 
        for (int i = 0; i < in.available(); i++) { 
        System.out.println("" + in.read()); 
        } 
        for (int i = 0; i < in.available(); i++) { 
         textArea.append(in.read()+"\n"); 
        } 
        // wait for 10 seconds and then destroy the process 

        p.destroy(); 

        } catch (Exception ex) { 
        ex.printStackTrace(); 
        } 




     } 
    }); 
+0

Крест отвечал: http://www.coderanch.com/t/650869/GUI/java/outputting-batch-file-launched-Jbutton – camickr

ответ

1

Попробуйте это:

for (int i = 0; i < in.available(); i++) { 
    textarea.append(in.read()+"\n"); 
} 

EDIT: Я думаю, что может быть также проблема с in.available(). Вы можете попытаться изменить это укомплектовать:

String line; 
Process p = Runtime.getRuntime().exec("c:\\ping.bat"); 
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); 
while ((line = in.readLine()) != null) { 
    System.out.println(line); 
    textarea.append(line); 
} 
in.close(); 
+0

@ user6680 Вы не получите выход, так что не читают файл или исключение throw ... может быть, оно ничего не обрабатывает, только 'Thread.sleep (10000);' держит его пока. Вы пытались изменить значение здесь? –

+0

Ничего не происходит, когда я добавляю этот код. Я также обновил код с указанным кодом. Когда я нажимаю кнопку, она удерживается в течение пары секунд, а затем она отпускается, но данные не выводятся в textArea? – user6680

+0

@ user6680, но вы пытались удалить 'Thread.sleep (10000);'? это какие-то изменения? –

0

Вы можете попробовать этот код, который будет выполнять пакетный файл, указанный и читать обратно ничего батник эхо. Оттуда вы сможете взять вход и добавить его в JTextArea. Пока ваша летучая мышь повторяет текст назад, batOutput должен его поймать. Однако следите за ошибками форматирования из-за нестандартных символов.

 public static void main(String[] args) { 
     String batFile = "C:/test.bat"; 

     try { 
     ProcessBuilder procBuild = new ProcessBuilder(batFile); 
     Process proc = procBuild.start(); 
     InputStream streamIn = proc.getInputStream(); 
     BufferedReader br = new BufferedReader(new InputStreamReader(streamIn)); 
     String batOutput = null; 
     while ((batOutput = br.readLine()) != null) { 
      System.out.println(batOutput); 
     } 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
    } 
Смежные вопросы