내가 작성한 일부 코드에 문제가 있습니다. Main에서 paintComponent 메서드로 변경하려고 시도하지만 비 정적 메서드에 대한 정적 참조를 만들 수 없다고합니다. 나는 그것이 무엇을 말하는지 이해한다고 생각하지만, 나는 이것에 대해 어떻게 확신 할 수 있는지 모르겠습니다. 클래스는 다음과 같습니다.Repaint()가 비 정적 메서드에 대한 정적 참조를 만들 수 없습니까?
import javax.swing.JFrame;
import java.awt.Graphics;
public class Main extends JFrame{
/**
*
*/
private static final long serialVersionUID = -4511248732627763442L;
public static void main(String[] args){
frame();
repaint();
move();
}
public static void frame(){
JFrame frame = new JFrame("Hunter VS Hunted");
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void paintComponent(Graphics g){
super.paintComponents(g);
Hunter.paint(g);
Hunted.paint(g);
}
public static void move(){
Hunter.move();
Hunted.move();
}
}
이 클래스의 헌터와 사냥은 두 개의 외부 클래스입니다. main 메소드에서 repaint()에 오류가 발생하고 조언이나 방향이 많이 알려졌다.
당신의'repaint()'메소드는 인스턴스 메소드이기 때문에 인스턴스에서 호출해야합니다. 어떤 인스턴스에서 호출하고 싶습니까? 당신은 실제로 어떤 순간도 창조하지 않고 있습니다. –
'repaint'는 인스턴스 메소드'JFrame'입니다. 메소드를 호출하려면 클래스의 인스턴스가 필요합니다. 또한'JFrame'에서 확장하지만 ('정적'?)'frame' 메서드에서 두 번째'JFrame'을 작성하므로'Main '에서'repaint'를 호출 할 수 있더라도 아무 것도 가질 수 없습니다 효과. GUI에서'static'을'정적으로 '만드는 것을 멈추십시오 == 나쁜 디자인 – MadProgrammer