当前位置: 首页 > 面试题库 >

JPanel不响应KeyListener事件

常英资
2023-03-14
问题内容

我有一个JFrame使用从扩展的类的子类JPanel

public class HelloWorld extends JPanel implements KeyListener

我将一个对象添加HelloWorld到框架-中app.add(helloWorld);。现在,当我按下任意键盘键时KeyListenerhelloWorld不会调用任何方法,并且似乎没有窗口焦点。我也尝试过调用,helloWorld.requestFocusInWindow();但仍然没有响应。

如何使它响应按键?


问题答案:

您是否KeyListenerHelloWorld面板设置了面板本身?另外,您可能需要将面板设置为可聚焦。我通过此代码对其进行了测试,它似乎可以正常工作

class HelloWorld extends JPanel implements KeyListener{
    public void keyTyped(KeyEvent e) {
        System.out.println("keyTyped: "+e);
    }
    public void keyPressed(KeyEvent e) {
        System.out.println("keyPressed: "+e);
    }
    public void keyReleased(KeyEvent e) {
        System.out.println("keyReleased: "+e);
    }
}

class MyFrame extends JFrame {
    public MyFrame() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(200,200);

        HelloWorld helloWorld=new HelloWorld();

        helloWorld.addKeyListener(helloWorld);
        helloWorld.setFocusable(true);

        add(helloWorld);
        setVisible(true);
    }
    public static void main(String[] args) {
        new MyFrame();
    }
}


 类似资料:
  • 问题内容: 我在项目中使用默认的Java KeyListener遇到麻烦。我注意到有时启动时,KeyListener似乎并没有转发KeyEvent。 问题的症状: 启动应用程序时,未处理密钥输入。这仅在有时发生。有时,我必须关闭并启动应用程序7至8次,直到显示出来。有时这是第一次尝试。发生这种情况后,直到我再次重新启动应用程序,它才起作用。 我正在使用: Window 7 x64和最新的Eclip

  • 有人能告诉我为什么这也不管用吗?(我的第二个动作监听器是我的游戏所需的其他东西)

  • 问题内容: 我正在做一个涉及JPanel中的鼠标和键监听器的小项目。不幸的是,当我使用鼠标/键盘时,没有一个方法被调用。我之前曾使用过JPanels / JFrame / JApplet和JComponents。代码片段如下所示: 偏离主题:我不断收到错误消息您的帖子似乎包含格式错误的代码。请使用代码工具栏按钮或CTRL + K键盘快捷键将所有代码缩进4个空格。要获得更多编辑帮助,请单击[?]工具

  • 我正在制作一个游戏,当我在导入一个用户输入时,我遇到了这个问题。我向JPanel添加了一个KeyListener,但它根本不起作用。该程序由JFrame(WindowManager)中的JPanel(GameWindow)组成。游戏在GameLoop对象中启动,该对象可以运行。级别包含地图外观的所有信息。我读到KeyListener工作,如果组件是可聚焦的,所以我检查面板是否是可聚焦的,程序返回t

  • 问题内容: 我正在尝试为我的实现。在构造函数上,我使用以下代码: 当我运行它时,该消息出现在我的控制台中。但是,当我按一个键时,我没有收到其他任何消息,好像该消息根本不在那儿。 我当时想这可能是因为重点不在上 ,所以他们没有收到任何事件。但是,我很确定。 我有什么想念的吗? 问题答案: 你必须将keyListener添加到所需的每个组件中。仅具有焦点的组件将发送这些事件。例如,如果JFrame中只

  • 额外信息:我是用BlueJ来从中,用4个类在basic程序中回答我的问题。我意识到很多人在互联网上说要使用键绑定而不是KeyListener,但我现在不明白键绑定... ---遵循装满鳗鱼的气垫船的建议,我将尝试使用键绑定。--- 所以Keybindings有两个“命令”来工作:输入和操作。