Java中的命令行界面

我想创建一个跨平台解决方案,以提供对Java进程的输入,错误和输出流的访问。

基本上,我想要创建的是一个显示Process的输出和错误流的文本区域,并允许您向输入流提供数据。 换句话说,几乎就是Eclipse在运行应用程序时已经为其控制台提供的内容。

现在,这个的基本实现很简单,我只需将所有按键发送到输入流。 但是,当然,我遇到了粘贴,退格键和箭头键,处理ctrl-C等问题。

在将数据发送到Process的输入流之前,我似乎应该等待。 但等待什么? 我应该在每个返回键上发送所有输入(和粘贴)的文本吗? 还是间隔一段时间? 那么ctrl-Cctrl-X等等。 我是否将箭头键移动到输入流?

你不应该等待任何事情,只需发送 – 但发送一个单独的线程,而不是你的GUI事件线程,所以后者不会阻止。

要处理特殊字符,请查看在文本控制台中输入这些符号时的效果。

最简单,最人性化的解决方案是使用“发送”按钮发送文本区域的全部内容并清除它。 想想即时通讯应用程序或SO评论编辑器。