2013-05-28 3 views
0

Я увидел this video [10:00] , чтобы начать создавать 2d-игру на Java, и я попытался использовать код, который он использовал в видео, и я получаю ошибку, и я не знаю, как исправить его.Ошибка в JFrame

package me.Kenig.game2d; 

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 = "Game"; 

    private JFrame frame; // error 

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

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // error 


    @Override 
    public void run() { 
     // TODO Auto-generated method stub 

    } 

} 

ответ

2

1) Вы никогда не создать экземпляр JFrame

Попробуйте

this.frame = new JFrame(); 

в конструкторе

2) Еще одна проблема:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

не в праве место: это должно быть в методе. Вы также должны предпочесть WindowConstants.EXIT_ON_CLOSE, а не JFrame.EXIT_ON_CLOSE.

3) Вы также должны позвонить frame.pack(), чтобы заставить рамку адаптировать свой размер, чтобы он соответствовал размеру его содержащихся элементов.

Вот кусок кода:

public Game(){ 
    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 

    setMinimumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE)); 
    setMaximumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE)); 

    //Not really necessary because of frame.pack() 
    //setPreferredSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE)); 

    //You should add some elements here 
    JPanel panel=new JPanel(); 
    panel.add(new JTextField(10)); 

    frame.add(panel); 

    //Forces the frame to take the minimum-size to contain its elements 
    frame.pack(); 
    frame.show(); 
} 

Вы должны смотреть на Visual guide to Swing components, чтобы увидеть, какие компоненты существуют и как они себя ведут.

Вы также должны взглянуть на visual guide to layout managers, чтобы понять, как ваши компоненты размещены

Удачи :)

+0

Добавление строки делает эффект это, но добавление ошибок по всей странице. Я знаю, что это что-то глупое, но я новичок в этом. – KenigOri

+0

Я обновил свой ответ, чтобы найти другие проблемы и добавить советы. –

+0

Отлично, я исправил его. У меня есть другая проблема с этой строкой: private BufferedImage image = new BufferedImage (WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); private int [] pixels = ((DataBufferInt) image.getRaster(). GetDataBuffer()). GetData(); // err DataBufferInt не может быть разрешен переменной – KenigOri

Смежные вопросы