获得对 JPanel 的关注

2022-09-02 01:09:00

我有一个里面的.我已经注册了一个 ,我想根据它更新.我遇到的问题是,我无法将注意力集中在上,因此我的工作不了。我已经知道 是功能性的,因为我注册了它,它工作正常。我的代码目前是这样的:JPanelJFrameKeyListenerJPanelJPanelKeyListenerKeyListenerJFrame

myFrame.setFocusable(false);
myPanel.setFocusable(true);
myPanel.addKeyListener(myKL);
myFrame.add(myPanel);

以前有人遇到过这样的问题吗?在这方面,我错过了什么吗?

P.S.:我没有任何组件,我只是在背景上绘制一个图像,所以我需要焦点放在JPanel本身上,而不是里面的东西上。JPanel


答案 1

虽然您指示面板可以聚焦,但面板不会要求对焦。尝试使用 .myPanel.requestFocus();


答案 2

使用 ,然后 .但是后者必须在包含面板的窗口可见之后完成,为此您可能需要注册一个窗口侦听器并在窗口中执行激活的处理程序代码。setFocusable(true)requestFocusInWindow()requestFocusInWindow()

注意:特别是在窗口可见之后,而不仅仅是在调用 .setVisible(true)