我刚刚设法让KeyListener在一个空的应用程序中工作,但后来我尝试在我的应用程序中实现它,无论我输入多少密钥,它都无法正常工作!
一位朋友告诉我这是因为我在应用程序上有按钮(JButton)(并且我实现了actionPerformed方法),任何人都可以向我解释为什么会发生这种情况(以及如何解决)?
编辑: - 是的,问题在于焦点,我在一些论坛中找到了解决方案,解决方案非常简单。它添加: setFocusable(真);之后,setVisible(true);在扩展JFrame的类中。
答案 0 :(得分:0)
您要添加KeyListener吗?我想如果你想在整个计算器中监听KeyEvents,你必须将它添加到按钮所在的Container中。
但我相信只有拥有焦点的组件会重新获得KeyEvents,因此我不知道容器是否具有焦点,或者如果焦点位于计算器的按钮上,事件是否被提升为其父级。
你可以解决这个问题,将keyListener添加到执行这些东西的容器(打印我所使用的字符),以及按钮和文本字段,将事件提升到它的容器