我尝试运行这个程序,每次我的程序无法从箭头键获取输入并将光标向左移动在控制台中向上写。
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
public class arrowkeys {
public static void main(String[] argv) throws Exception {
JFrame myJFrame = new JFrame();
myJFrame.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_UP) {
System.out.println("Up Arrrow-Key is pressed!");
}
}
});
myJFrame.setVisible(true);
}
}
JLine 是一个提供高级行编辑功能和 基于控制台的应用程序的输入处理。你可以用它来 捕获箭头键事件并处理控制台中的光标移动 申请。
以下是如何修改代码以使用 JLine 的示例:
import org.jline.reader.LineReader;
import org.jline.reader.LineReaderBuilder;
import org.jline.terminal.Terminal;
import org.jline.terminal.TerminalBuilder;
public class ArrowKeysConsole {
public static void main(String[] args) throws Exception {
Terminal terminal = TerminalBuilder.builder().system(true).build();
LineReader lineReader = LineReaderBuilder.builder().terminal(terminal).build();
while (true) {
int keyCode = lineReader.readCharacter();
if (keyCode == 27) { // Check for Escape key (27 is the Escape key code)
int next = lineReader.readCharacter();
int last = lineReader.readCharacter();
if (next == 91) { // Check for '[' character after Escape
if (last == 65) {
System.out.println("Up Arrow Key is pressed!");
}
}
}
}
}
}