如何制作类似于Bukkit的Java控制台应用程序(可以在屏幕底部显示日志,同时保持光标等待输入)

3
我想创建一个Java控制台应用程序,类似于“Bukkit、Spigot”(http://i.imgur.com/mDgTZ83.png)。
如您所见,在图片中,有打印日志到控制台屏幕,但是如何保持光标在屏幕底部(将“>”符号保持在屏幕底部,每个输入字符都将在“>”符号旁边开始,并且您不能删除“>”符号!)
当我在控制台中输入某些内容时,同时有一条新的日志消息,这件事总是让我的输入保持在屏幕底部(不分散到其他地方)。
那么我该如何做到这一点呢?我努力在谷歌上搜索它,但没有找到解决方案:'(
提前感谢您
Apidech T.
//编辑(添加更多细节)
这就像一个控制台聊天客户端,输入和输出是异步和分开的。
//解决方案 解决方案是Jline。谢谢

1
你能发一点你的代码吗?我不是完全确定你已经做了什么不起作用。 - Ryan - Llaver
是的,https://pastebin.com/5d5Stm2M,[编辑]这只是一个我尝试制作非阻塞控制台应用程序输入的示例,我不知道如何在有新消息的同时保持输入在同一行。 - Tackleza
看看JLine吧。我认为它已经提供了你所需要的大部分功能。 - cello
2个回答

3
你需要一些终端控制的库,这些库实现了类似“跳转到第n行,第m列”或“清除至行末”等命令。可以看看这里,其中介绍了一个类似于curses的Java库。
“curses”是C/C++中完成此任务的库。

-2

看起来你正在使用 System.out.println(),但每次调用它都会打印在新的一行。

你应该使用 System.out.print(),它只会追加到同一行。

例如:

Scanner s = new Scanner(System.in);
System.out.println("Enter your statement: \n")
System.out.print("> ");
String s = s.nextLine();

将输出:

Enter your statement:

> /* You will be typing here in the console */

好的。我尝试创建一个控制台应用程序,可以同时显示日志、消息或其他内容。这个控制台应用程序可以接受用户输入,而不会阻塞主线程。谢谢。 - Tackleza
如果您查看图片(http://i.imgur.com/mDgTZ83.png),我想知道如何将控制台应用程序分成两个区域(第一个区域显示日志,第二个区域等待输入)。谢谢。 - Tackleza
不。我只是想知道如何创建这样的控制台应用程序。我不需要别人为我创建控制台应用程序。 - Tackleza
这是你应该在最初的问题中提出的。如果你想要得到建议,就必须具体说明。你已经尝试了什么?什么没有起作用?你想要实现什么目标?你已经有了哪些代码?所有这些信息都是我们需要知道的,才能提供帮助。 - Ryan - Llaver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接