Java小程序游戏不能在Mac电脑上运行,即使它可以在PC电脑上运行
我制作了一个基于jpanel的游戏。当我将jpanel添加到jframe时,它在pc和Mac上都可以正常工作 下面是我将jpanel添加到jframe的类:Java小程序游戏不能在Mac电脑上运行,即使它可以在PC电脑上运行,java,macos,applet,jpanel,Java,Macos,Applet,Jpanel,我制作了一个基于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.setResi
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上却不行。在EclipseApplet测试仪中,第一个屏幕绘制,但它不接受键盘输入来启动游戏。不过,在任何浏览器/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(){}
}
我将感谢任何可以提供的帮助,如果必要的话,我愿意提供更多的信息。我甚至可以提供游戏的其他类,但有很长的时间和混乱,我宁愿不,除非必要
如果你想测试的话,可以找到游戏的applet版本。如果你有一台个人电脑,它应该可以正常工作,但有了mac电脑就不行了
**编辑**
在这里,您可以下载所有类和资源的.jar文件。如果您想要,请随意使用这些文件自己测试您的解决方案。。。否则,我将在周二访问mac,届时我将测试所有解决方案
这只是一个问题,但由于Swing线程问题通常会导致有害的、不可预测的和难以检测的错误,如果以线程安全的方式创建小程序会怎么样?i、 e
public void init() {
try {
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
createGUI();
}
});
} catch (Exception e) {
System.err.println("createGUI didn't successfully complete");
}
}
private void createGUI() {
Board b;
b = new Board();
getContentPane().add(b);
b.focus()
}
JApplet
正在从板上窃取焦点。要防止这种情况,请在init()方法的末尾添加以下内容:
setFocusable(false);
我认为您需要发布板的源代码,以便有人诊断问题。这个bug可能在focus
(这不是JComponent
的方法,所以我假设它是您自己的实现,或者您的意思是requestFocus
)或者在您的keylister
中。focus方法实际上只是板上调用requestFocusInWindow()的方法但是我还是要发布整个游戏的jar。jar的链接已经添加。好的,谢谢。不幸的是,我要到本周星期二才能使用mac电脑。如果你有一台mac电脑并且想测试这个,我发布了一个包含所有类和资源的jar,哈哈。否则,我会在周二进行测试并回复你。如果你不能测试这个问题,那么问这个问题可能有点为时过早,我们也不能,因为你提供的代码不足以让个人测试和再现你的问题。好吧。干杯编辑:啊,我看到你把罐子贴出来了。哈哈,对不起,是我的错。我修复了包含源代码的jar链接。ok。非常感谢。我会在星期二测试这个,然后再给你回复,除非在那之前我能找人帮我测试一下。这很有效,因为游戏现在可以在eclipse小程序查看器中完美运行。然而,这款游戏仍然不能在Mac电脑的html页面上运行。Mac的浏览器中使用的java版本是否过时?杰夫:我发现在Mac的java首选项中,如果选择“在浏览器进程中运行小程序”,浏览器会忽略小程序标记中指定的JRE版本,并始终使用默认的JRE。如果你选择“在自己的进程中运行小程序”,那么在Firefox中它会变得不稳定(尽管在Safari和Chrome中很好)。我所知道的唯一可靠的解决方法是针对Java 1.5(默认版本比这个版本早是很少见的。)@Jeff:BTW你的游戏几乎可以在Java 1.5上运行。BuffereImage构造器中存在一个例外,您可以创建船舶图像的旋转版本,可以使用BuffereImage(ColorModel、WritableRaster、boolean、HashTable)
构造器来解决该问题。在那之后,比赛似乎进行得很顺利。好的,谢谢。我没有得到任何例外,但我会努力解决这个问题。