【问题标题】:Press Up Arrow and Brings the Last Java Console Command按向上箭头并带上最后一个 Java 控制台命令
【发布时间】:2026-02-11 18:30:01
【问题描述】:

目前我在一个 Java 项目中,该项目是控制台驱动的。我想实现一个功能,当用户在我的程序的命令行中按下向上箭头时,命令行将显示用户运行的最后一个命令。

我发现了一些关于键盘事件的信息,如下所示,

public void keyPressed(KeyEvent evt);
public void keyReleased(KeyEvent evt);
public void keyTyped(KeyEvent evt);

但是,我只是不知道如何将命令字符串带到命令行。例如,当用户按下“向上”时,该命令应将最后一个命令作为命令行的预输入返回。

【问题讨论】:

    标签: java console-application arrow-keys


    【解决方案1】:

    当用户执行命令时,使用
    public void keyPressed(KeyEvent evt);
    将其存储在临时变量中 当用户按下向上键时,将该变量中的值显示到屏幕上

    示例代码:

    public void executeCommand(String command){
        temp = command;
        // your code
    }
    
    
    
    public void keyPressed(KeyEvent evt){
        //display the value in the temp variable to screen
    }
    

    【讨论】:

    • 谢谢 :-) 是的,我知道这一点,我真正想知道的是如何将最后一个命令字符串作为预输入命令带回命令行,然后何时用户按回车,就会被执行,就像linux终端一样。
    • 您必须自己保存历史记录,例如List<String> history,并在事件触发时显示例如history.get(0)
    • 但是,还是只是打印在屏幕上,而不是设置为预输入命令?我希望可以是这样,在按下向上箭头>>>最后一个命令之后,用户运行最后一个命令所要做的就是按下回车键。
    【解决方案2】:

    除非应用程序使用特殊的 API,否则其控制台输入受控制台驱动程序的支配(对于虚拟控制台,提供虚拟控制台的应用程序)。幸运的是,有一个项目将 Java 连接到 readline 或 editline API,它将提供编辑工具,包括使用向上箭头检索前一行。见http://java-readline.sourceforge.net/

    【讨论】:

    • 不幸的是,代码是 GPL,因此除非许可是可接受的,否则用途有限。
    最近更新 更多