Java 如何修改这段代码以创建一个键盘侦听器,即使在';它没有输入到文本字段中吗?

Java 如何修改这段代码以创建一个键盘侦听器,即使在';它没有输入到文本字段中吗?,java,Java,我想写一个程序,无论用户点击什么,都可以读取用户的键盘输入。我只是通过让用户在文本字段中输入文本来实现它,即使我的KeyListener正在测试KeyPressed事件,而不是KeyTyped事件 这是为了模拟康威的人生游戏。目的是读取用户的按键输入,查看他们是否输入了特定的按键,这将暂停模拟。我尝试不包括TextField并直接将KeyListener添加到JFrame,但它不会读取我的输入。我尝试将文本字段的可见性设置为false,这也不会读取我的输入 以下是我现在拥有的: import j

我想写一个程序,无论用户点击什么,都可以读取用户的键盘输入。我只是通过让用户在文本字段中输入文本来实现它,即使我的KeyListener正在测试KeyPressed事件,而不是KeyTyped事件

这是为了模拟康威的人生游戏。目的是读取用户的按键输入,查看他们是否输入了特定的按键,这将暂停模拟。我尝试不包括TextField并直接将KeyListener添加到JFrame,但它不会读取我的输入。我尝试将文本字段的可见性设置为false,这也不会读取我的输入

以下是我现在拥有的:

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Listener
{
    private JFrame j;
    private KeyInput k;

    public Listener()
    {
        j = new JFrame();
        Container c = j.getContentPane();
        k = new KeyInput();
        JTextField t = new JTextField();
        t.addKeyListener(k);
        c.add(t);
        j.setFocusable(true);
        j.pack();
        j.setVisible(true);
        t.setVisible(true);
    }

    public char getKeyPressed()
    {
        return k.getKeyPressed();
    }

    public class KeyInput extends KeyAdapter
    {
        private char ch = 0;

        public void keyPressed(KeyEvent ev)
        {
            ch = ev.getKeyChar();
        }

        public char getKeyPressed()
        {
            return ch;
        }
    }
}

我想以某种方式修改此代码,以便程序可以读取用户输入,而不需要文本字段。

如果我没有弄错,这将很有帮助:)


您应该遵循Java命名约定:变量名和方法名都是用camelCase编写的。是的,thunks注意,我将纠正它,从而解决问题。我认为我必须将keyListener添加到内容窗格中,但结果表明,可以将其添加到框架中。谢谢!
import javax.swing.* ;
import java.awt.event.* ;
public class Test {

    public Test () {
        JFrame jFrame = new JFrame();
        // this line is optionnel, i just wrote it to see the JFrame when testing
        jFrame.setSize(300, 180);
        jFrame.setVisible(true);
        KeyInput keyInput = new KeyInput() ;
        jFrame.addKeyListener (new KeyAdapter() {
            public void keyTyped(KeyEvent e) {
                // stores the pressed key value in the currentCaracter field of keyInput
                keyInput.setCurrentCaracter (e.getKeyChar()) ;
                // prints out the value stored, for testing
                System.out.println(keyInput.getCurrentCaracter());
            }
        }) ;

    }

    public static void main (String args[]) {
        new Test();
    }

}

class KeyInput{
    public KeyInput() {
    }
    public void setCurrentCaracter (char currentCaracter)
    {
        this.currentCaracter = currentCaracter ;
    }

    public char getCurrentCaracter() {
        return currentCaracter;
    }

    private char currentCaracter ;
}