【问题标题】:Keeping input/output separated in Java console application在 Java 控制台应用程序中保持输入/输出分离
【发布时间】:2011-04-07 18:48:07
【问题描述】:

我正在用 Java 编写控制台应用程序。它类似于聊天客户端:输入和输出是异步进行的。问题是,如果在用户打字的过程中进行了一些输出,那么这些行会在屏幕上混淆。

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

程序需要在 Linux 服务器上运行并通过 ssh 会话访问。因此,任何仅在此环境中有效的提示都可以。

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

【问题讨论】:

    标签: java console console-application


    【解决方案1】:

    我记得很久以前在 C++ 中使用过类似的东西。那时我正在使用ncurses 库。查看javacurses,它似乎是类似 ncurses 的 Java 实现。

    【讨论】:

    • 虽然因为怀旧我喜欢图书馆。它有它的耀斑。但它是一个完整的小部件库。您可以使用任何小部件库(例如 AWT、SWT)并为此创建两个文本区域。如果没有关于如何分离进出的任何简短的 sn-p,我看不出使用 jcurses 的意义
    • @kewlbfy OP 需要一个在终端中工作的解决方案。您提到的小部件库在该上下文中不起作用 afaik
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 2012-12-27
      相关资源
      最近更新 更多