我正在学习如何制作Pacman游戏,所以我制作了一个JPanel并在其上添加了一个keyListener。但我也希望显示高分和当前分数,所以我添加了一个JFrame并将JPanel放在那里。现在游戏将无法运行,尽管图像会加载。我试过自己搜索,但这很难,因为我不知道如何准确地描述问题。
以下是代码:
编辑:好的,所以我不知道为什么,但是当我把这些东西放在最后设置GUI而不是游戏再次运行时。也许这是你们谈论的重点事项?无论如何,非常感谢你的帮助!myMac:apache-ant-1.9.7 mauri$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk
myMac:apache-ant-1.9.7 mauri$ sh build.sh
Error: JAVA_HOME is not defined correctly.
We cannot execute /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/bin/java
Bootstrap FAILED
myMac:apache-ant-1.9.7 mauri$ ls /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/bin/java
ls: /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/bin/java: No such file or directory
答案 0 :(得分:1)
使用布局管理器进行Swing工作。 JFrame的默认布局管理器是BorderLayout。阅读教程以了解BorderLayout
的工作原理。
让布局管理器完成其工作并摆脱所有setBounds(...)逻辑。
wall.add(board);
//board.setVisible(true);
addKeyListener(board);
board.setFocusable(true);
//currentScore.setBounds(0,0,100,50);
wall.add(currentScore);
因此,在上面的代码中,您尝试将两个组件添加到墙的BorderLayout.CENTER
。 (注意,如果您没有指定约束,则默认为CENTER)。这不会起作用,因为只有一个组件可以在CENTER中显示,所以只有最后一个组件可见。
相反,您可以尝试:
wall.add(currentScore, BorderLayout.PAGE_START);
此外,你班级的基础知识是错误的。 PacManGUI"是一个" JFrame,因此不需要在构造函数中创建第二个框架。查看教程目录。 How to Make Frames
还有一个部分可以帮助您入门。