作为一项任务的一部分,我需要用Java构建一个系统shell模拟器。其中一个功能是使用向上箭头键(↑)来指示运行命令的历史记录。我需要把占位符'控制台系统输入中的文本。
我了解如何存储运行命令的历史记录。我不确定的部分是如何获得'占位符'扫描仪输入中的文字。
示例(用户的输入为绿色):
当用户点击向上箭头键时,他们可以得到这个(假设先前已经cal
运行):
可以使用Scanner
系统类完成吗?如果没有,这可以用别的东西来完成吗?
答案 0 :(得分:0)
基本上每次用户输入命令时,您都必须将该命令(很可能是String
)存储到某种List
中。
因此...
ArrayList<String> commands = new ArrayList<String>();
int displacementFromLastCommand = 0;
每次扫描仪读取一行......
String newCommand = scanner.nextLine();
commands.add(newCommand);
displacementFromLastCommand = 0;
然后在你的keyEvent上......
public void onKeyReleased(KeyEvent event) {
if(event.getKeyCode() == KeyEvent.VK_UP) {
displacementFromLastCommand ++;
// set the current text to commands.get(commands.size() - dis);
}
}