Java 在swing中更改文本的对话框

Java 在swing中更改文本的对话框,java,swing,process,runtime.exec,swingworker,Java,Swing,Process,Runtime.exec,Swingworker,我正在开发一个swing应用程序,其中使用Runtime.getRuntime.execute()运行cmd命令;以及使用BufferReader读取命令的输出。现在我想要的是,我想要在对话框中显示输出,并更改其中的文本(使用JTextPane),或者在文本区域中添加字符串,并输出命令,就像我们在启动任何其他IDE的Eclipse以加载先决条件时看到的那样 我试着创建JDialog类的子类,但它并不是我想要的 我的代码: Process p = Runtime.getRuntime().exec

我正在开发一个swing应用程序,其中使用Runtime.getRuntime.execute()运行cmd命令;以及使用BufferReader读取命令的输出。现在我想要的是,我想要在对话框中显示输出,并更改其中的文本(使用JTextPane),或者在文本区域中添加字符串,并输出命令,就像我们在启动任何其他IDE的Eclipse以加载先决条件时看到的那样

我试着创建JDialog类的子类,但它并不是我想要的

我的代码:

Process p = Runtime.getRuntime().exec(commandToBeExecuted);
            BufferedReader in = new BufferedReader(newInputStreamReader(p.getInputStream()));
            String line = null;
                  MessageDialog myDialog=new MessageDialog(UserInterface.this);

            while ((line = in.readLine()) != null) {
                  System.out.println(line);  
                  myDialog.setText(line);
                  myDialog.setVisible(true);
                  myDialog.setLocationRelativeTo(UserInterface.this);
            }
        } catch (Exception ex) {
            Logger.getLogger(UserInterface.class.getName()).log(Level.SEVERE, null, ex);
            errorGlobal.setText("Some Exception Occured in update "+ex.getMessage());
            System.out.println("Exception occured " + ex.getMessage());
        }   

有可能做我想做的事情吗?实现这一点的最佳方法是什么?

你的问题已经在循环中了。使用JTextArea.append并将其余部分放在循环之外,

1)读取(并实施)的所有建议。这可能会解决问题。如果没有,它应该提供更多关于失败原因的信息。然后忽略它引用的
exec
,并使用
ProcessBuilder
构建
流程。还可以将
字符串arg
分解为
字符串[]args
,以说明本身包含空格的参数。2) 为了更快地得到更好的帮助,发布一条消息。你说这是“没有做我想做的”。你这是什么意思?请看看这个,它可能会给你想要的想法。只需运行程序,单击
开始
按钮,然后在控制台上键入任何内容,它将显示在
JTextArea
上,如果要停止从
控制台执行读取
,请单击
停止
按钮。虽然它还没有完全完成,但它正在进行:-)它没有更改对话框中完全为空的文本。执行完成时只显示文本。@pyus13:单击“开始”按钮,然后在控制台上键入。您在控制台上键入的内容将添加到JTextArea。此外,您可能正在寻找的是,这种方法我根本没有使用JtextArea,我使用的是附加文本是第二选择,我想用新文本更改相同的文本,但新文本不起作用。“我没有使用JtextArea”以便更快地获得更好的帮助。。啊,为什么这么麻烦?你以前不理我。