2011-03-07 5 views
0

는 내가 JPanel을 확장하고있는 WorldManager 클래스가 방법 그냥 수업과 같이 방법을 그리는 것을 호출 할 수는 :자바 그리기 이미지는

원칙적으로

public void paint(Graphics g) { world1.paint(); hero.paint(); }

+1

"스윙 프로그램은'paint()'를 오버라이드하는 대신'paintComponent()'를 오버라이드해야합니다." [AWT 및 스윙의 페인팅 : 페인트 방법] (http://java.sun.com/products/jfc/tsc/articles/painting/index.html#callbacks). – trashgod

답변

2

, 당신의 접근 방식에 아무 문제가 없다. 지적

  1. trashgod , 당신은의 paintComponent 방법 대신 페인트 방법을 덮어 쓰기합니다. paintBorder()paintChildren() 방법은 경계와 하위 구성 요소를 자신의 회화를 할 수있는, 이런 식으로, 당신은 단지 실제 내용에 대해 생각하게 자유 롭다 :

    이유

    article linked by trashgod에 기록됩니다.

  2. 다른 페인트 메소드는 Graphics 매개 변수 (또는 필요한 경우 한 번만 캐스팅하려는 Graphics2D)를 가져 와서 호출해야합니다.

    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); 
        } 
    } 
    

    그래서, 실제로 귀하의 질문에 무엇을했다 : 여기

은 예입니다?

+0

@Paulo 그래서 WorldManager에서 내 paint 메소드를 paintComponent 메소드로 변경하고 super.paintComponent (g)를 호출하고 작동하지만 왜 일반 페인트 메소드 대신 paintComponent를 사용해야하는지 설명 할 수 있습니까? – Bob

+0

@Chris : 지금 추가했습니다. –

+0

@Chris 질문을 '대답/정답'으로 표시하는 것을 잊지 마십시오. 이것은 나중에 답변을 검색하는 사람들에게 도움이됩니다. –