2010-09-03 56 views
4

我正在用Java编写控制台应用程序。它类似于聊天客户端:输入和输出是异步创建的。问题是,如果在用户处于打字过程中进行某些输出时,线条会混淆在屏幕上。在Java控制台应用程序中保持输入/输出分离

我正在寻找一个解决方案,它允许我有一个输出区域与输出区域分开。此刻我正在使用一个额外的线程轮询System.in上的BufferedReader。

该程序需要在Linux服务器上运行,并通过ssh会话进行访问。因此,只有在这种环境下才能使用的提示都很好。

是否有任何高级库可以做到这一点?或者是否有使用终端/ ANSI代码的巧妙技巧? ANSI代码(保存游标)和r(恢复游标)可能会有所帮助,但我如何知道在哪里跳转以执行输出,以及如何处理滚动?

回答

2

我记得很久以前在C++中使用过类似的东西。然后我正在使用ncurses库。看看javacurses这似乎是类似ncurses的Java实现。

+0

虽然我喜欢图书馆由于怀旧。它有它的耀斑。但它是一个完整的小部件库。您可以使用任何小部件库(例如AWT,SWT)并为此设置两个文本区域。如果没有关于如何分离进出的简短片段,我没有看到使用jcurses的要点 – benez 2015-09-04 10:08:43

+1

@kewlbfy OP需要一个在终端中工作的解决方案。你提到的小部件库不适用于这种情况 – 2015-09-05 16:41:22

1

听起来像你需要使用诅咒。 JCurses是一个Curses库的Java实现,可以让你控制终端以允许滚动,定位等。

相关问题