Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java KeyListener不工作_Java_Event Handling - Fatal编程技术网

Java KeyListener不工作

Java KeyListener不工作,java,event-handling,Java,Event Handling,我刚刚设法让KeyListener在一个空的应用程序中工作,但后来我尝试在我的应用程序中实现它,但它根本不起作用,不管我输入多少键 一位朋友告诉我,这是因为我在应用程序上有按钮(JButton)(我实现了actionPerformed方法),有人能向我解释为什么会发生这种情况(以及如何修复它) 编辑:- 是的,问题是关于焦点,我在一些论坛上找到了解决方案,而且解决方案非常简单。它是通过添加: 设置聚焦(真);之后,设置为可见(true);在将JFrame.扩展到wich组件的类中,是否添加了Ke

我刚刚设法让KeyListener在一个空的应用程序中工作,但后来我尝试在我的应用程序中实现它,但它根本不起作用,不管我输入多少键

一位朋友告诉我,这是因为我在应用程序上有按钮(JButton)(我实现了actionPerformed方法),有人能向我解释为什么会发生这种情况(以及如何修复它)

编辑:- 是的,问题是关于焦点,我在一些论坛上找到了解决方案,而且解决方案非常简单。它是通过添加:
设置聚焦(真);之后,设置为可见(true);在将JFrame.

扩展到wich组件的类中,是否添加了KeyListener?我认为,如果你想在整个计算器中收听KeyEvents,你必须将其添加到按钮所在的容器中

但是我相信只有具有焦点的组件才能接收KeyEvents,因此我不知道容器是否具有焦点,或者如果焦点位于计算器的按钮上,事件是否会升级到其父级


你可以通过在容器中添加一个keyListener来解决这个问题(打印我支持的字符),在按钮和文本字段中添加一个keyListener,将事件升级到它的容器中

我不知道要添加什么,因为代码太大了,不能放在这里!这是一个计算器。我有一个扩展JFrame的类,上面添加了按钮(从1到9),我还添加了一个textfield。然后我通过实现ActionListener界面的ActionPerformed方法来处理数字按钮引起的事件。将代码简化为可以发布的内容。在这个过程中,你要么自己发现问题,要么到了有人能真正帮助你的地步。。。我刚刚接受了两个答案!我会这样做,但主要问题是:在侦听JButtons和侦听键(通过将帧添加到侦听器列表)之间是否存在任何干扰?