Java KeyListener在实现它、将KeyListener添加到对象并实现方法之后拒绝工作
下面有一个主类,它创建了一个简单的JFrame和一个名为Screen的JPanel类的扩展,Screen是一个实现KeyListener的私有内部类。我让screen的构造函数将KeyListener作为参数添加到对象中。不管我怎么做,当我给它输入时,它都拒绝调用KeyListener方法Java KeyListener在实现它、将KeyListener添加到对象并实现方法之后拒绝工作,java,swing,jpanel,keylistener,Java,Swing,Jpanel,Keylistener,下面有一个主类,它创建了一个简单的JFrame和一个名为Screen的JPanel类的扩展,Screen是一个实现KeyListener的私有内部类。我让screen的构造函数将KeyListener作为参数添加到对象中。不管我怎么做,当我给它输入时,它都拒绝调用KeyListener方法 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Main{ private JFram
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Main{
private JFrame window;
private Screen screen;
public static void main(String[] args){
Main driver = new Main();
}
public Main(){
window = new JFrame();
screen = new Screen();
window.add(screen);
window.setSize(500, 500);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
private class Screen extends JPanel implements KeyListener{
public Screen(){
this.addKeyListener(this);
}
public void keyPressed(KeyEvent e) {
System.out.println("input received");
}
public void keyReleased(KeyEvent e) {
System.out.println("input received");
}
public void keyTyped(KeyEvent e){
}
}
}
非常感谢您的反馈。是的,这是一个非常常见的问题,它围绕着
KeyListener
的工作方式
KeyListener
仅当注册到的组件可聚焦且具有键盘焦点时,才会生成按键事件。在您竞争并尝试使您的JPanel
可聚焦(这只会导致它看起来是随机工作的)之前,您应该使用,它旨在帮助解决此问题(使用KeyListener
)是的,这是一个围绕KeyListener
如何工作的非常常见的问题
KeyListener
仅当注册到的组件可聚焦且具有键盘焦点时,才会生成按键事件。在您竞争并尝试使您的JPanel
可聚焦(这只会导致它看起来是随机工作的)之前,您应该使用,它旨在帮助解决此问题(使用KeyListener
)