1

这个简单的代码在处理过程中从未对我有用:

try {
  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  String str = "";
  while (str != null) {
    System.out.print("> prompt ");
    str = in.readLine();
    println(str);
  }
} 
catch (IOException e) {
}

可能是因为控制台输出框不能用于输入,这与 Eclipse 不同。是否有一个简单的解决方法,或者我是否被迫为标准输入执行诸如对话框(或按键处理)之类的操作?

4

2 回答 2

1

如果您使用的是 Processing IDE,Processing 本身不支持此行为。如果您导出草图并编辑 java 文件,或使用Eclipse、Proclipsing、core.jar等,您可以像任何其他 java 应用程序一样访问 System.in,但是,这会破坏处理的目的,因为它没有t 通常从命令行运行并且本质上是图形的。

最佳做法是使用按键方法捕获按键。例如:

String str = "";

void keyPressed() {
    str += key;
}

然后在您的 draw() 循环/方法中,您可以处理 str 上的文本输入并在需要时将其清除。

如果你想要更复杂的东西来获得更好的用户体验,我建议使用ControlP5 的TextField 或 TextArea 之类的东西。

于 2012-10-24T18:52:51.267 回答
0

您的程序运行良好(我将其命名为 test)并将其导出为 Applet。我用 cygwin 以及 windows 命令提示符进行了测试:

$ cd test/applet
$ java -jar test.jar

输出(我输入“hello”并回车):

prompt> hello
hello
prompt>

我通过 ssh 在 Ubuntu 终端上进行了非常快速的尝试。我在将它连接到 x11 服务器时遇到了问题。如果这是一个问题,请考虑:http ://en.wikipedia.org/wiki/Xvfb。

只是为了确认一下,我能够运行 Library->Network 中包含的 SharedCanvasServer 示例,我在其中添加了一个 System.out.println 以将调试转储到正在执行的终端。

java -cp "core.jar;net.jar;SharedCanvasServer.jar" SharedCanvasServer
于 2013-07-17T22:02:54.980 回答