【问题标题】:Append to JTextArea? [duplicate]追加到 JTextArea? [复制]
【发布时间】:2012-08-08 18:42:39
【问题描述】:

可能重复:
Capturing stdout when calling Runtime.exec

这是问题,有以下代码,

public void CMD() {
    try
    {            
        Runtime rt = Runtime.getRuntime();

        Process proc = rt.exec("dir");
        InputStream stdin = proc.getInputStream();
        InputStreamReader isr = new InputStreamReader(stdin);
        BufferedReader br = new BufferedReader(isr);
        String line = null;
        System.out.println("<OUTPUT>");
        while ( (line = br.readLine()) != null)
            System.out.println(line);
        System.out.println("</OUTPUT>");
        int exitVal = proc.waitFor();            
        System.out.println("Process exitValue: " + exitVal);
    } catch (Throwable t)
    {
        t.printStackTrace();
    }
}

如何让它将输出传输到 jTextArea 中?

【问题讨论】:

  • 错误,jtextArea.append()?
  • “这是问题,” 我的问题是,为什么代码使用大锤 (Runtime.exec()) 来破解坚果(一个文件列出可以使用File 类来完成)。回答完之后,我想知道为什么代码会在文本区域中显示(任何内容)列表,而不是 JListJTableJComboBox?总而言之,您的问题令人困惑。
  • 你看,我刚开始使用 NetBeans,我基本上是在玩,但实际目标是,我确实有一个独立的 Maude 控制台,通过按下按钮,我将 text1 保存为 Maude 模块在 Maude 控制台中执行,加上另一个 text2 保存我的模块的命令,然后在执行过程终止后,我想将输出传输到 textarea3。
  • 无论如何,我感谢所有花费时间并评论我提出的问题的人

标签: java swing jtextarea runtime.exec


【解决方案1】:

很简单:

    while ( (line = br.readLine()) != null) {
        textArea.append(line + "\n");
    }

【讨论】:

    【解决方案2】:

    我认为最好将 UI 与处理分开 - 这个概念称为分层。我反对在这种方法中看到标记。最好将其与从运行时进程中实际获取信息分开。

    我建议阅读执行流程的新方法。

    1. http://www.javaworld.com/jw-12-2000/jw-1229-traps.html
    2. http://www.java-tips.org/java-se-tips/java.util/from-runtime.exec-to-processbuilder.html

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多