如何捕捉 console output 信息到 jtextarea??
 

解决方案 »

  1.   

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    PrintStream ps = new PrintStream(bos, true, "UTF-8");
    System.setOut(ps);
    System.out.println(...);
    ...
    YourJTextArea.setText(bos.toString("UTF-8"));
      

  2.   


    谢谢…
    现在我希望
    用Java programes 再执行另一个 Java programs….
    如何将后者执行的output信息传到前者的 textarea
      

  3.   

    JAVA不能处理WINDOWS的窗口句柄
    可以用TCP来连接两个不同的JAVA程序
      

  4.   


    如果不能, netbeans (call javac.exe) 如何编译 java files??
      

  5.   

    Process p = Runtime().getRuntime().exec("javac HelloWorld.java");
    InputStream is = p.getInputStream();
    is.read();
    ...
      

  6.   


    奇怪没有信息output?
    请问哪里错了?
    查看该java file 已经被编译...
    该java file, 我故意用错误的code…也没有output.public class Test extends JFrame implements ActionListener {    JTextArea jt = new JTextArea(10, 10);
        JButton button = new JButton("Start");    public Test() {
            super("Run Java");
            jt.setText("Compile Output: \n");
            button.addActionListener(this);
            getContentPane().add(jt, BorderLayout.CENTER);
            getContentPane().add(button, BorderLayout.SOUTH);        setSize(400, 300);
            setDefaultCloseOperation(EXIT_ON_CLOSE);    }    public void startRun() {
            Runtime r = Runtime.getRuntime();
            Process p = null;        try {
                String s = "C:\\Program Files\\Java\\jdk1.6.0_07\\bin\\javac.exe C:\\myFile.java";
                p = r.exec(s);
                BufferedReader is = new BufferedReader(new InputStreamReader(p.getInputStream()));
                String line;            while ((line = is.readLine()) != null) {
                    System.out.println(line);
                    jt.append(line + " A\n");
                    jt.repaint();
                }        } catch (Exception e) {
                System.out.println("error===" + e.getMessage());
                e.printStackTrace();
            }
        }    public void actionPerformed(ActionEvent e) {
            startRun();
        }
    }
      

  7.   

    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JTextArea;@SuppressWarnings("serial")
    public class Test extends JFrame implements ActionListener { JTextArea jt = new JTextArea(10, 10);
    JButton button = new JButton("Start"); public Test() {
    super("Run Java");
    jt.setText("Compile Output: \n");
    button.addActionListener(this);
    getContentPane().add(jt, BorderLayout.CENTER);
    getContentPane().add(button, BorderLayout.SOUTH);
    setSize(400, 300);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    } public void startRun() {
    Runtime r = Runtime.getRuntime();
    Process p = null;
    try {
    String s = "C:\\Program Files\\Java\\jdk1.6.0_07\\bin\\javac.exe C:\\myFile.java";
    //如果源文件没有语法错误是不会有输出信息的,所以要拿带语法错误的源文件测试
    p = r.exec(s);
    BufferedReader is = new BufferedReader(new InputStreamReader(p.getErrorStream()));
    //javac.exe 非正常退出要用错误流获取输出信息即 p.getErrorStream()
    String line;
    while ((line = is.readLine()) != null) {
    System.out.println(line);
    jt.append(line + " A\n");
    jt.repaint();
    }
    } catch (Exception e) {
    System.out.println("error===" + e.getMessage());
    e.printStackTrace();
    }
    } public void actionPerformed(ActionEvent e) {
    startRun();
    } public static void main(String[] args) {
    new Test().setVisible(true);
    }}