2012-11-27 69 views
1

我正在試圖製作一個簡單的java 2-d平臺遊戲。 Java一直給我帶來一些麻煩 「可序列化的類Display沒有聲明long類型的靜態最終serialVersionUID字段」 任何人都可以幫忙嗎?JFrame,JPanel和awt問題

這是錯誤消息我收到的時候我嘗試運行該程序: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); 
    } 
} 
+0

建議將代碼直接放在未來的問題中,以便將來可以保留。使用外部鏈接可能會中斷。 –

+0

我建議你在這裏發佈你的錯誤消息*文本*,而不是你看起來試圖去做的不完整的圖像。 –

回答

4

這不是一個錯誤,它是一個警告,它來自你擴展一個serializabl e類(您的類正在擴展的GUI組件之一),並且不會像Serializable接口合約所規定的那樣爲它提供最終的serialVersionUID字段。這並不重要,因爲您很可能不想序列化此類的對象(將它們存儲到磁盤或傳輸它們),因此您可以安全地忽略此警告或使用註釋@SuppressWarnings(「serial」)來告訴編譯器忽略它。即

編輯:或者你可以給它一個默認的serialVersionUID作爲bhuang3狀態。 1+給他的回答!

編輯2:

@SuppressWarnings(「serial」) 
public class Display extends JFrame { 

    // ..... 

} 

編輯3:
下一步,我們將討論爲什麼它通常是沒有必要的,事實上往往不是創建一個擴展的JFrame或其他成分,除非你將覆蓋類是個好主意一些超類的方法...

+0

謝謝你,但程序/窗口不會打開 – user1855106

+0

@ user1855106:你的問題打開你的窗口有***沒有任何***與這個問題做再次編譯器只是給你一個警告在這裏,而不是一個錯誤,此警告不會影響程序的運行。你已經有了更多的調試工作,看起來可能還有另一個問題。 –

3

我認爲你需要在Display2類中聲明serialVersionUID。例如: :private static final long serialVersionUID = 1L;