Jframe没有显示任何内容并"cannot be cast to java.applet.Applet"



我只想在我的空框架中添加一个按钮,它非常非常简单。

框架没有显示任何内容,尽管程序运行,IDE告诉我:"

java.lang.ClassCastException: Spots cannot be cast to java.applet.Applet
    at sun.applet.AppletPanel.createApplet(AppletPanel.java:793)
    at sun.applet.AppletPanel.runLoader(AppletPanel.java:722)
    at sun.applet.AppletPanel.run(AppletPanel.java:379)
    at java.lang.Thread.run(Thread.java:744)"

所以我为它延长了JApplet,它不再抱怨了,框架现在是灰色的,仍然没有什么。此外,标题没有显示。

有趣的是,即使我完全复制了Oracle教程网站(官方):教程网站上的示例代码,也会发生同样的情况,它会压缩小程序。

请帮忙,非常感谢!!!

public class Spots{
private static void createAndShowGUI() {
    JFrame frame = new JFrame();
    JButton jButton = new JButton("Click Me");
    jButton.setSize(20,20);
    jButton.setVisible(true);
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.add(jButton);
    frame.setSize(500, 500);
    frame.setTitle("Bar Code Scanner");
    frame.pack();
    frame.setVisible(true);
}
public static void main(String[] args){
    createAndShowGUI();

    }
}

对于所有有此问题的人,请检查您的IDE运行设置,以查看它作为小程序或应用程序运行。再次感谢您的友好帮助!

如果你正在制作一个小程序,你的代码甚至不应该有一个JFrame变量。相反,在init方法中,将JButton添加到小程序的contentPane()或添加到contentPane的JPanel中,就像任何教程都会告诉你的那样。

当然,如果你不想创建一个小程序,这是不成立的,但如果是这样,你为什么要把它当作小程序来运行呢。请为我们澄清这一点。


编辑
你在评论中问:

谢谢你的帮助!但如果我想用Jframe的方式做呢?因为我不想创建小程序,所以我没有扩展Japlet或创建init()。但是ide抱怨"你需要扩展applet",在我的代码中有没有任何地方告诉它我正在创建一个applet?我不想:(

IDE不应该关心您创建的类的类型,只要它编译即可。当您尝试运行代码时,JVM可能会抱怨它不是小程序,如果1)您尝试将其作为某些HTML代码中调用的小程序运行,或者2)尝试使用IDE的小程序模拟器运行它。如果是前者,就不要这样做。把它作为一个独立的程序运行。如果是后者,就不要这样做。告诉IDE你正在尝试运行一个Java程序,对于两者,都要确保你有一个有效的主方法。

文件名不能强制转换为java.applet.applet:检查点:1.扩展JFrame->扩展JApplet2.public constructor()->public void init()3./public static void main(String[]args){…}/。这意味着不需要这种方法。4.完成以上所有操作后,保存并编译。因为当你运行(appletviewer index.html)时,你需要filename.class。这个filename.cclass应该是你已经编译了1~3个的那个

相关内容

最新更新