2011-02-10 67 views
2

我想创建一个跨平台解决方案,用于访问Java中Process的输入,错误和输出流。Java中的命令行界面

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

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

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

+0

你用粘贴,退格键等得到了什么问题?我认为你重定向关键事件的组件也应该处理所有事件。所以,如果有事情没有发生,如果你愿意,我会看看你是否使用正确的组件。 – 2011-02-10 12:36:01

+0

当某人粘贴某物时,该组件会收到一个ctrl + V事件,但比文本区域中添加的要多得多。这也可以检测到,但是我什么时候将它发送到输入流?马上?但是如果有人粘贴某些东西,几次后退然后返回? – 2011-02-10 12:49:18

回答

0

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

对于处理特殊字符,看看当这些标志输入到文本控制台时你会得到什么。

1

最简单和最用户友好的解决方案是有一个“发送”按钮,发送文本区域的全部内容并清除它。认为即时通讯应用程序或SO评论编辑器。