2017-01-18 11 views
1

최근에 내 프레임의 오버레이를 만들 때 문제가 발생했습니다. 프레임은 GamePanelOverlayPanel의 두 패널로 구성되어 있으며 각 패널에는 고유 한 paint 메소드가 있습니다. 필자의 코드를보다 깨끗하고 효율적으로 유지하기 위해 이들을 분리했다. 하지만 지금 가지고있는 문제는 내 paintComponent 메서드가 서로 겹쳐서 한 번에 하나의 페인트 패널 만 표시된다는 것입니다.하나의 jframe에서 두 개의 jpanels에 두 가지 페인트 방법 사용

나는 이것이 두 패널이 모두 화면 전체를 가리고 있기 때문에 발생할 가능성이 높다는 것을 알고 있습니다. 그러나 OverlayPanel에 그려지는 것은 화면의 일부만을 덮습니다.

목표는 GamePanel이 일종의지도를 그릴 것이므로 OverlayPanel은이지도 상단의 지정된 위치에 사각형과 같은 것을 그립니다.

제 접근 방식이 잘못 되었나요? 아니면 제가 누락 된 것이 있습니까?

답변

1

이 잘못에 대한 나의 접근 방식입니다 ..

예. 별도의 클래스에서 별도의 메서드로 드로잉 작업을 분리 할 수 ​​있지만 여전히 단일 메서드로 전체 작업을 수행 할 수 있습니다.

draw(Graphics2D) 방법과 Map 클래스 및 draw(Graphics2D) 방법도 RectangularPlayer 클래스가있다 상상해보십시오. 각 클래스는 공통 그래픽 인스턴스에 자체 파트를 그리는 방법을 알고 있습니다. GameField 클래스의 paintComponent(Graphics) 메서드에서지도 및 플레이어 클래스의 관련 그리기 메서드 및 렌더링해야하는 다른 게임 요소를 호출합니다.