JFrame,JPanel和awt问题

时间:2012-11-27 01:24:30

标签: java swing jframe jpanel

我正在尝试制作一个简单的java 2-d平台游戏。 Java一直给我带来一些麻烦 “可序列化类Display不会声明类型为long的静态最终serialVersionUID字段” 有人可以帮忙吗?

这是我尝试运行程序时收到的错误消息:http://i.imgur.com/H0Afv.png (在网站上)

以下是代码:

import javax.swing.*;

public class Main {

    public static Display f;
    public static int width = 800;
    public static int height = 600;

    public static void main(String[] args)
    {

        f = new Display();
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setResizable(true);
        f.setSize(width, height);
        f.setLocationRelativeTo(null);
        f.setTitle("2-D Platformer");
    }


}
//This is my display class.

import java.awt.*;

import javax.swing.*;

/* this is where the error is
 *
 */           V 
public class Display extends JFrame{

    public Display p;
    public Display()
    {

        p = new Display();
        add(p);
        setLayout(new GridLayout(1, 1, 0 , 0));
    }
}
//and this is my display2 class
import java.awt.Color;

import javax.swing.*;

/* this is where the error is
 *too
 */            V 
public class Display2 extends JPanel{

    public Display2()
    {
        setBackground(Color.BLACK);
    }
}

2 个答案:

答案 0 :(得分:4)

这不是错误,它是一个警告,它来自您扩展可序列化类(您的类正在扩展的GUI组件之一),而不是像Serializable接口协议规定的那样给它最终的serialVersionUID字段。这并不重要,因为您不太可能要序列化此类的对象(将它们存储到磁盘或传输它们),因此您可以安全地忽略此警告或使用注释@SuppressWarnings(“serial”) ,告诉编译器忽略它。即,

编辑:或者你可以给它一个默认的serialVersionUID作为bhuang3状态。他的回答是1+!

编辑2:

@SuppressWarnings(“serial”)
public class Display extends JFrame {

   // .....

}

编辑3:
接下来我们将讨论为什么它通常不是必需的,实际上通常不是一个好主意来创建扩展JFrame或其他组件的类,除非你重写了超类的一些方法......

答案 1 :(得分:3)

我认为您需要在Display2类中声明serialVersionUID。 例如:private static final long serialVersionUID = 1L;