有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java检查控制台中是否按下了一个键

我想通过某种方法或事件处理程序检查用户是否在CLI应用程序中按下了某个键

诸如此类:

if(isWPressed)
    System.out.println("'W' is pressed");
if(isAPressed)
    System.out.println("'A' is pressed");

我试过这个答案: How do I check if the user is pressing a key?

但它不起作用,从导入的角度来看,我注意到它使用awt,因此在没有窗口的CLI中没有用处。我也不能用Scanner来实现这一点(正如这里所建议的:Detect a key press in console),就好像用户会按下多个按钮一样——比如wa。我需要知道这两个按钮都被按下了


共 (1) 个答案

  1. # 1 楼答案

    您需要使用keylistener,它允许获取密钥

    Example 
    
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package javaapplication7;
    
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    
    /**
     *
     * @author wilso
     */
    public class List implements KeyListener {
    
        @Override
        public void keyTyped(KeyEvent e) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
    
        @Override
        public void keyPressed(KeyEvent e) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
    
        @Override
        public void keyReleased(KeyEvent e) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
    
    }
    

    如果你不想使用awt,那么你可以使用扫描仪或事件

    @Override
    public void nativeKeyPressed(NativeKeyEvent e) {
        String temp = NativeKeyEvent.getKeyText(e.getKeyCode());
        if (validHotKeys.contains(temp)) {
            if (!pressedHotKeys.contains(temp)) {
                pressedHotKeys.add(temp);
                System.out.println(pressedHotKeys.toString());
            }
        }
        if (validAlphaKeys.contains(temp)) {
            if (!pressedAlphaKeys.contains(temp)) {
                pressedAlphaKeys.add(temp);
                System.out.println(pressedAlphaKeys.toString());
            }
        }
    }