2016-10-15 4 views
0

JFrame 객체를 생성 한 다음 간단한 검정 코드를 작성한 다음 배경을 검은 색으로 칠하고 파란색 사각형을 그립니다. 그러나 repaint() 메서드는 paintComponent() 메서드를 호출하지 않습니다. repaint() 자바의 paintComponent()를 호출하지 않는다

코드입니다 : 나는 "접수 그리는 요청"을 인쇄하기 때문에 paintRequest()가 제대로 호출되고 있음을 알 수

import java.util.Vector; 
import javax.swing.JPanel; 
import javax.swing.JFrame; 
import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Container; 

public class Snake extends JPanel{ 
     private Vector xCoords = new Vector(); 
     private Vector yCoords = new Vector(); 

     public Snake(){ 
       xCoords.add(150); 
       yCoords.add(150); 
     } 

     public void startJFrame(){ 
       JFrame window = new JFrame(); 
       window.setSize(300, 300); 
       window.setVisible(true); 
       window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       Container c = window.getContentPane(); 
       c.setBackground(Color.black); 
     } 

     public void paintRequest(){ 
       System.out.println("Request to paint received."); 
       repaint(); 
     } 

     public void paintComponent(Graphics g){ 
       super.paintComponent(g); 
       System.out.println("paintComponent was called"); 
       g.setColor(Color.blue); 
       int x = (int)xCoords.get(0); 
       int y = (int)yCoords.get(0); 
       g.fillRect(x, y, 10, 10); 
     } 

     public static void main(String[] args){ 
       Snake mkFrame = new Snake(); 
       mkFrame.startJFrame(); 
       mkFrame.paintRequest(); 
     } 
} 

하지만 "paintComponent에 호출 한"인쇄되지 않습니다. GUI 쪽에서는 JFrame 창이 생성되고 검정색 배경이 있지만 파란색 사각형이 없습니다. 도와 주셔서 미리 감사드립니다.

+0

팁 : 어떤 메서드를 재정의 할 때 사용하는'Override' 표기 @ 방법 맞춤법과 서명을 확인합니다. –

+1

x/y 값에'Point' 객체를 사용하는 것도 좋습니다. – camickr

답변

2

프레임에 이제까지 추가 된 Snake가 없습니다!

변경 :

JFrame window = new JFrame(); 

사람 :

JFrame window = new JFrame(); 
    window.add(new Snake()); 
+0

나는 이것을 잊어 버린 것을 믿을 수 없다. 고맙습니다. 그러나 이로 인해 배경이 검은 색이 아닌 회색으로 흰색으로 표시됩니다. 이 문제를 해결하는 방법을 알고 있습니까? – acn3

+0

패널이 프레임의 내용 창을 완전히 덮습니다. 프레임의 색상을 설정하는 것을 신경 쓰지 마세요. –

관련 문제