2013-10-22 37 views
0

我正在嘗試啓動一些2d代碼,並且到目前爲止我有這麼多。它應該只是讓一個窗口出現,但是當我運行它(在調試中)時,我得到一個錯誤,說源找不到?任何人都能看到我失蹤的東西?一些2D Java代碼故障

package game; 

    import java.awt.BorderLayout; 
    import java.awt.Canvas; 
    import java.awt.Dimension; 

    import javax.swing.JFrame; 

public class Game extends Canvas implements Runnable{ 


private static final long serialVersionUID = 1L; 

public static final int WIDTH = 160; 
public static final int HEIGHT= WIDTH/12*9; 
public static final int SCALE=3; 
public static final String NAME = "My Game"; 

private JFrame frame; 
public boolean running=false; 

public Game() 
{ 
    setMinimumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE)); 
    setMaximumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE)); 
    setPreferredSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE)); 

    frame = new JFrame(NAME); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setLayout(new BorderLayout()); 

    frame.add(this,BorderLayout.CENTER); 
    frame.pack(); 

    frame.setResizable(false); 
    frame.setLocation(null); 
    frame.setVisible(true); 
} 

public synchronized void start() 
    { 
    running = true; 
    new Thread(this).start(); 
    } 

public synchronized void stop() 
    { 
    running =false; 
    } 

public void run() 
    { 
    while(running) 
    { 
     System.out.println("Hello!"); 
    } 

    } 

public static void main(String[]args) 
{ 
    new Game().start(); 

} 


} 

我是從一些教程努力讓這一點,我通過代碼自己去了幾次,但我不能發現什麼是錯。 :(

+1

請包括完整的錯誤和堆棧跟蹤我剛剛在'frame.setLocation(null)'得到一個錯誤,如果我刪除它運行好的,顯示一個空框架並在無限循環中打印「Hello」 –

+0

是的,當我刪除那一行時也工作過,但我認爲它必須包含在框架和「你好」循環是預期的。 – javawocky

+0

是的,這是感謝:)對不起,我開始想念這些東西,當我一直盯着它太久。 – javawocky

回答

3

的問題是這一行:

frame.setLocation(null); 

提供給setLocation參數不能爲null。如果你不需要設置框的位置,不調用該方法通過。默認情況下,幀被放置在屏幕的左上角

+1

或者,在打開「Frame」之前調用'setLocationByPlatform(true)',允許系統特定的默認位置。 – Holger