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 창이 생성되고 검정색 배경이 있지만 파란색 사각형이 없습니다. 도와 주셔서 미리 감사드립니다.
팁 : 어떤 메서드를 재정의 할 때 사용하는'Override' 표기 @ 방법 맞춤법과 서명을 확인합니다. –
x/y 값에'Point' 객체를 사용하는 것도 좋습니다. – camickr