处理标准(processing.org)

时间:2012-10-23 22:47:12

标签: java input processing

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

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不同。有一个简单的解决方法,还是我被迫做标准的对话框(或keyPressed处理)?

2 个答案:

答案 0 :(得分:1)

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

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

String str = "";

void keyPressed() {
    str += key;
}

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

如果你想要更复杂的东西以获得更好的用户体验,我建议使用像ControlP5's TextField或TextArea这样的东西。

答案 1 :(得分:0)

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

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

输出(我输入“hello”并按Enter键):

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