는 내가 JPanel을 확장하고있는 WorldManager 클래스가 방법 그냥 수업과 같이 방법을 그리는 것을 호출 할 수는 :자바 그리기 이미지는
원칙적으로public void paint(Graphics g) { world1.paint(); hero.paint(); }
는 내가 JPanel을 확장하고있는 WorldManager 클래스가 방법 그냥 수업과 같이 방법을 그리는 것을 호출 할 수는 :자바 그리기 이미지는
원칙적으로public void paint(Graphics g) { world1.paint(); hero.paint(); }
, 당신의 접근 방식에 아무 문제가 없다. 지적
trashgod , 당신은의 paintComponent 방법 대신 페인트 방법을 덮어 쓰기합니다. paintBorder()
및 paintChildren()
방법은 경계와 하위 구성 요소를 자신의 회화를 할 수있는, 이런 식으로, 당신은 단지 실제 내용에 대해 생각하게 자유 롭다 :
이유
은 article linked by trashgod에 기록됩니다.class WorldManager extends JPanel
{
private World world1;
private Person hero;
public void paintComponent(Graphics g) {
super.paintComponent(); // paints the background, if opaque
world.paint(g);
hero.paint(g);
}
}
그래서, 실제로 귀하의 질문에 무엇을했다 : 여기
은 예입니다?
@Paulo 그래서 WorldManager에서 내 paint 메소드를 paintComponent 메소드로 변경하고 super.paintComponent (g)를 호출하고 작동하지만 왜 일반 페인트 메소드 대신 paintComponent를 사용해야하는지 설명 할 수 있습니까? – Bob
@Chris : 지금 추가했습니다. –
@Chris 질문을 '대답/정답'으로 표시하는 것을 잊지 마십시오. 이것은 나중에 답변을 검색하는 사람들에게 도움이됩니다. –
"스윙 프로그램은'paint()'를 오버라이드하는 대신'paintComponent()'를 오버라이드해야합니다." [AWT 및 스윙의 페인팅 : 페인트 방법] (http://java.sun.com/products/jfc/tsc/articles/painting/index.html#callbacks). – trashgod