Java 在swing中更改文本的对话框
我正在开发一个swing应用程序,其中使用Runtime.getRuntime.execute()运行cmd命令;以及使用BufferReader读取命令的输出。现在我想要的是,我想要在对话框中显示输出,并更改其中的文本(使用JTextPane),或者在文本区域中添加字符串,并输出命令,就像我们在启动任何其他IDE的Eclipse以加载先决条件时看到的那样 我试着创建JDialog类的子类,但它并不是我想要的 我的代码: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
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”以便更快地获得更好的帮助。。啊,为什么这么麻烦?你以前不理我。