我不知道怎么说这个,但我有一个基于箭头键的游戏 . 无论如何有一个选项菜单,但在我选择选项后,当我尝试按箭头键并移动没有任何反应...我假设它是因为我“活跃”在另一个现在隐藏的JFrame(选项菜单)而不是游戏画面 .
当我关闭选项菜单时,有没有办法让程序知道我希望键盘操作能够引用回原始的JFrame?
虽然我在这里,但我正试图弄清楚如何使游戏窗口全屏显示 . 现在我有setUndecorated所以没有边框,我尝试了代码:setExtendedState(JFrame.MAXIMIZED_BOTH);但是游戏转移到了屏幕的右下方 . 我现在是外接显示器,这有关系吗?我也有不可调整大小的格式(我在netbeans上),我有Jframe和Jpanels的“设置”大小,我应该删除它们吗?
我希望这是有道理的,谢谢, - 奥斯汀
*全部都是netbeans .
1 回答
我假设您正在使用KeyListener来捕获键击,如果是这样,KeyListeners仅在被侦听的组件具有焦点时才起作用 . 您的问题是,在交换视图时,您收听的组件没有焦点 . 解决此问题的一种方法是在交换后在侦听的组件上调用
requestFocusInWindow()
.但是还有一个更大的问题,那就是你开始使用KeyListeners时,通常应该避免使用Swing应用程序 . 而是使用Key Bindings,这是一个更高级别的概念,因此应该用于支持低级KeyListeners .
另外,为了最大化JFrame,您可以将Frame.MAXIMIZED_BOTH作为参数传递给您正在执行的参数 . 你在打电话
pack()
吗?另外,你不是在JFrame上调用setLocation(...)
,setBounds(...)
或setSize(...)
,对吗?编辑:我发现你实际上在JFrame上调用了
setSize(...)
. 是的,删除它,因为如果你最大化JFrame没有任何意义 .Edit
我建议的代码示例: