我有一个JFrame
使用从扩展的类的子类JPanel
public class HelloWorld extends JPanel implements KeyListener
我将一个对象添加HelloWorld
到框架-中app.add(helloWorld);
。现在,当我按下任意键盘键时KeyListener
,helloWorld
不会调用任何方法,并且似乎没有窗口焦点。我也尝试过调用,helloWorld.requestFocusInWindow();
但仍然没有响应。
如何使它响应按键?
您是否KeyListener
为HelloWorld
面板设置了面板本身?另外,您可能需要将面板设置为可聚焦。我通过此代码对其进行了测试,它似乎可以正常工作
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有两个“命令”来工作:输入和操作。