2016-02-15 6 views
0

Всякий раз, когда я запускаю это я получаю сообщение об ошибке:Почему мой Oval не печатает на JFrame?

"Exception in thread "main" java.lang.NullPointerException at anime.re.drawShape(re.java:17) at anime.re.main(re.java:12)"

Я не проходящее пустую ссылку, в чем проблема?

import javax.swing.JFrame; 
import java.awt.Graphics; 

public class re { 
    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     frame.setSize(400, 400); 
     Graphics g = frame.getGraphics(); 
     drawShape(g); 
     frame.setVisible(true); 
    } 

    public static void drawShape(Graphics g) { 
     g.drawOval(0, 0, 100, 100); 

    } 
} 

ответ

1

Используйте метод paint для Graphics2D вместо того, чтобы создавать свой собственный метод. также исключение нулевого указателя происходит от попытки рисования перед настройкой вашего jpanel или для отображения вашей jframe.

public class example extends JPanel{ 

public static void main(String[] args){ 
    JFrame frame = new JFrame("Example"); 
    example main = new example(); 
    int miliSecs = 25; 

    frame.add(main); 

    frame.setSize(640, 480); 
    frame.setResizable(false); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 

    frame.repaint();//here is the call to the paint method 
} 
    public void paint (Graphics g){ 
    //paints the screen 
    g.setColor(Color.BLACK); 
    g.fillRect(0,0,640,480); 
    } 
} 

Таким образом, вы также вызвать update() метод, который очищает экран каждый кадр вместе с методом paint().

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