java - 从我的 Java 工具启动执行 .exe

标签 java multithreading user-interface netbeans exe

我的工具带有 Java 的用户界面。如果我单击一个按钮,我想启动一个应用程序。 exe 在我的工具中,我有一个控制台,我想在其中输出 .exe 的输出(控制台)。为此,我这样做了:

Runtime run = Runtime.getRuntime();
    StyledDocument doc = txtResult.getStyledDocument();
    SimpleAttributeSet keyWord = new SimpleAttributeSet();
    StyleConstants.setForeground(keyWord, Color.RED);

try {

    Process pp=run.exec(PATHEXE);

    BufferedReader in =new BufferedReader(new InputStreamReader(pp.getInputStream()));
    BufferedReader inErr =new BufferedReader(new InputStreamReader(pp.getErrorStream()));
    String line = null;
    String lineErr = null;
    while (((line = in.readLine()) != null) ||(lineErr = inErr.readLine()) != null) {
        if(line != null)
             doc.insertString(doc.getLength(), line+"\n", null );
        if(lineErr != null)
              doc.insertString(doc.getLength(), lineErr+"\n", keyWord );
    }

    int exitVal = pp.waitFor();
    System.out.println("Process exitValue: " + exitVal);
    btRun.setEnabled(true);
}   catch (Exception e) {
    e.printStackTrace();
    System.out.println(e.getMessage());
}

一切正常,但我仍然有一些问题:

  1. 我想转移执行。 exe 在另一个线程上 在.exe执行期间释放用户界面。
  2. 在我的工具中读取输出 .exe 仅在...的末尾,然后运行更新我在运行时获得输出?

最佳答案

使用 SwingWorker 。它提供了从 EDT 中删除长时间运行的任务,同时更新 EDT 上的 GUI 的功能。

关于java - 从我的 Java 工具启动执行 .exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7939573/

相关文章:

linux - linux的GUI开发工具比较

java - 为什么 Java 对包使用分层目录?

java - 多个文件读取器同时并行读取同一文件

java - jlist 由 arrayList 填充。单击项目时,信息应显示在 jTextArea 中。但它做了两次

c++ - 这是交换(多线程)的异常安全实现吗?

c - openmp reduction 不提供与顺序方法相同的答案

java - 每个类默认都有自己的Thread吗?

java 子串?

java - CQ5 - 吊索接入节点

java - While 循环未捕获(Java)