还有其他方法可以使用吗

问题描述 投票:0回答:1

我尝试运行这个程序,每次我的程序无法从箭头键获取输入并将光标向左移动在控制台中向上写。

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);
    }
}
java swing intellij-idea keyboard awt
1个回答
0
投票

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!");
                    }
                }
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.