在做Java课设时遇到的问题。
期望通过以下语句使 gamePanel 组件获得焦点
if (!gamePanel.isFocusable()){
gamePanel.setFocusable(true);
}
if (!gamePanel.isFocusOwner()){
gamePanel.requestFocusInWindow();
}
然而并未使组件成功获取到焦点。
后来发现,组件所在的容器必须先设置为可见,requestFocusInWindow()
方法才能起作用。
比方说,当前类继承了 JFrame 类,即该类是一个容器,gamePanel 组件添加在当前容器中,必须先将该容器(窗口)设置为可见:
this.setVisible(true);
然后再对 gamePanel 调用 requestFocusInWidow()
方法,即可成功使 gamePanel 组件获取到焦点。