运行批处理精细onclick延迟

时间:2015-06-07 13:21:47

标签: java batch-file jframe jtextarea

我有一个JButton执行批处理文件(ping 192.168.0.5)并将ping结果输出到JTextArea。当我按下按钮运行批处理文件时,它确实有效。控制台显示计算机实时ping,就像cmd提示一样,但是点击按钮后,它等待批处理文件完成执行,然后一次性输出整个结果,而不是像控制台那样实时输出。如何让textArea输出像控制台一样实时运行而不是一次性运行?

JButton btnPingComputer = new JButton("PING");

    btnPingComputer.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent arg0) {

            String line;

            Process p = null;

            try {

                p = Runtime.getRuntime().exec("c:\\test.bat");

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            BufferedReader in = new BufferedReader(new InputStreamReader(p
                    .getInputStream()));

            try {

                while ((line = in.readLine()) != null) {

                    System.out.println(line);

                    textArea.append(line);
                    textArea.append(String.format("  %s%n", line));

                }

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            try {

                in.close();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            // textArea.setText("");

        }

    });

0 个答案:

没有答案