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