【发布时间】:2011-06-10 01:55:19
【问题描述】:
我制作了一个基于 jpanel 的游戏。当我将 jpanel 添加到 jframe 时,它在 pc 和 mac 上都可以正常工作。
这是我将 jpanel 添加到 jframe 的类:
import javax.swing.JFrame;
public class Start{
public static void main(String[] args){
JFrame f = new JFrame("Rocks");
f.setSize(600,500);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Board b = new Board();
f.add(b);
f.setVisible(true);
}
}
但是,当我将此 jpanel 添加到 japplet 时,它仍然可以在 pc 上完美运行,但不能在 mac 上运行。在 eclipse 小程序测试器中,第一个屏幕绘制,但它不接受键盘输入来启动游戏。不过,在任何浏览器/html 页面中,游戏似乎根本没有加载,当我打开 chrome 的 java 控制台时,我没有看到任何错误。
这是我将 jpanel 添加到 japplet 的类
import javax.swing.JApplet;
public class rockAppletStart extends JApplet{
public void init(){
Board b;
b = new Board();
add(b);
b.focus();
}
public void start(){}
public void stop(){}
public void destroy(){}
}
如果能提供任何帮助,我将不胜感激,如有必要,我愿意提供更多信息。我什至可以提供游戏的其他类,但那里很长而且很乱,除非必要,否则我宁愿不提供。
游戏的小程序版本可以在here at gamejolt.com找到,如果你想测试一下。如果你有一台电脑,它应该可以正常工作,但使用 mac 就不行了。
** 编辑 ** 在这里您可以下载所有类和资源的 .jar 文件。如果您愿意,请随意使用这些文件自己测试您的解决方案...否则,我将在周二访问 Mac,然后我将测试所有解决方案。
【问题讨论】:
-
我认为您需要发布
Board的来源,以便有人诊断问题。该错误可能在focus中(这不是JComponent的方法,所以我认为这是您自己的实现,或者您的意思可能是requestFocus)或您的KeyListener。 -
焦点方法,实际上只是一个调用 requestFocusInWindow() 的方法,但我还是要把整个游戏的 jar 贴出来
-
.jar 的链接已添加。