gpt4 book ai didi

java - KeyListener实现后拒绝工作,将keylistener添加到对象并实现方法

转载 作者:行者123 更新时间:2023-12-02 04:01:56 24 4
gpt4 key购买 nike

下面的主类创建了一个简单的 JFrame 和名为 Screen 的 JPanel 类的扩展,Screen 是一个实现 KeyListener 的私有(private)内部类。我让屏幕的构造函数将 KeyListener 添加到对象,并以其自身作为参数。然而,无论我尝试什么,当我给它输入时,它都拒绝调用 KeyListener 方法。

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 可聚焦(这只会导致它看似随机地工作)之前,你应该使用 Key Bindings API相反,它旨在帮助解决此问题(使用 KeyListener)

关于java - KeyListener实现后拒绝工作,将keylistener添加到对象并实现方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34801935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com