Java JTextfield应触发所有键盘输入

Java JTextfield应触发所有键盘输入,java,swing,keyboard,jtextfield,keylistener,Java,Swing,Keyboard,Jtextfield,Keylistener,我想在JTextField中触发所有键盘输入(还有strg、alt和tab) super.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent arg0) { System.out.println(arg0.getKeyChar()); } @Override public void keyReleased(KeyEvent arg0) {

我想在JTextField中触发所有键盘输入(还有strg、alt和tab)

super.addKeyListener(new KeyListener() {

    @Override
    public void keyTyped(KeyEvent arg0) {
        System.out.println(arg0.getKeyChar());
    }

    @Override
    public void keyReleased(KeyEvent arg0) {

    }

    @Override
    public void keyPressed(KeyEvent arg0) {

    }
});
KeyListener不会触发strg、alt或/和tab等键盘输入

这个案子有解决办法吗


我需要这个设置屏幕,用户可以在其中更改键,必须按下该键才能执行向前移动之类的操作。

这对我来说很有效,我必须禁用遍历才能捕获
选项卡
键。 还要注意的是,像
Alt
Shift
Control
这样的键永远不会调用
keyTyped()
事件。 但是,当您使用
keyPressed()
keyreased()
事件时,可以捕捉到它们:

public class Scribble extends JFrame implements KeyListener {

    public Scribble(){
        this.setLayout(new BorderLayout());
        JTextField field = new JTextField();
        field.addKeyListener(this);
        /*
         * Disable tab, so we can catch it
         */
        field.setFocusTraversalKeysEnabled(false);
        this.add(field, BorderLayout.CENTER);
        this.pack();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }

    public void keyTyped(KeyEvent e) {
        System.out.println("Key typed: " + e.getKeyCode());
    }

    public void keyPressed(KeyEvent e) {
        System.out.println("Key pressed: " + e.getKeyCode());
    }

    public void keyReleased(KeyEvent e) {
        System.out.println("Key released: " + e.getKeyCode());
    }

    public static void main(String[] args) {
        new Scribble();
    }
}
“我想触发JTextField中的所有键盘输入(也包括strg、alt或tab)。”为什么?这为最终用户提供了什么功能?