java - 如何使用缓冲阅读器将预先确定的文本设置为用户输入?
问题描述
基本上,我将如何要求用户输入从一开始就给出一个默认值供用户编辑。例如。要求用户在已在文本字段中输入默认值“1”时提供值。
解决方案
在 BufferedReader 上调用该readLine()
方法不会创建类似于 GUI 应用程序中的文本输入的“文本字段”。
理论上,您可以使用RawConsoleInput 之类的库来实现您想要做的事情。您必须编写一个方法来跟踪字符堆栈中的“输入”,该字符堆栈已初始化为包含默认值。然后打印默认值,并一一读取按键:
- 对于大多数按键操作,将按下的按键压入堆栈,然后将其打印出来,使其出现在控制台上。
- 当按下退格键时,从堆栈中弹出并打印
\b
转义序列以在控制台中模拟退格。 - 在回车键上,停止读取按键,打印
\n
并将堆栈内容作为字符串返回。
该解决方案将不兼容跨平台,因为没有跨平台的方式来进行非行缓冲控制台输入,并且某些控制台(例如 Eclipse 内置的控制台)不能\b
正确处理。
拥有默认选项的更简单且几乎可以肯定更好的方法就是告诉用户默认选项是什么,然后让他们在不输入任何内容的情况下按“输入”来获得默认选项。
推荐阅读
- demandware - OrderMgr getOrder() 方法总是返回 null
- php - 在 WooCommerce 中更改库存电子邮件通知收件人
- mysql - 维护 MySQL 和文件系统之间的数据完整性
- c# - 如何将 XML 输出格式化程序添加到 ASP.Net 样板?
- apache-flink - 未执行操作员时检查点中止
- redis - 如何为 Redis 集群设置密码?
- typescript - 在 Angular 6 中的 mat-expansion 面板标题内使用时,菜单未在 keydown.enter 上打开
- java - 如何在图数据库neo4j中表达时间段(时间)关系
- java - 将 Java 中的 ALT 键与 ActionMap 匹配
- ffmpeg - ffmpeg in:h264 out:yuv to stdout - 数据格式?