2012-02-24 4 views
0

2D 게임을 애플릿에서 JFrame으로 변환 중입니다. JPanel을 JFrame에 추가하고 JPanel을 드로잉 표면으로 사용해야한다는 것을 알고 있지만 서브 클래 싱해야하는 것이 무엇인지 정확히 알지 못합니다. 나는 JFrame으로 시도하고 있었지만, JFrame을 확장하는 것은 일반적으로 불필요하고 나쁜 아이디어라고 읽었다. (나는 어쨌든 추가 기능을 추가하지 않았다. JPanel의 paintComponent() 메서드를 재정의해야하므로 지금 JPanel을 확장하는 방향으로 기울이고 있습니다. 2D 게임 표면을 만드는 더 좋은 방법이 있습니까? 아니면 JPanel을 확장하고 JFrame에이를 추가하는 적절한 방법입니까?JPanel을 확장하여 2D 게임의 드로잉 서페이스를 만드는 것이 적절합니까?

+1

정확합니다. JPanel 또는 JComponent를 사용하고 paintComponent를 재정의하십시오. super 메소드를 호출 한 직후 paintComponent 메소드에서 그릴 BufferedImage로 백그라운드 드로잉을 수행하십시오. 스프라이트는 BufferedImage 위의 paintComponent 메소드에서 직접 그려 질 것입니다. 또한 그의 좋은 recs를 위해 @ Snicolas에 1+. –

답변

3

아니요, 더 좋은 방법은 없습니다. 아주 좋은 방법입니다. JFrame (다른 옵션)을 확장하면 대부분의 Windows 제품군 OS에서 애니메이션이 깜박입니다.

JPanel은 순수 스윙 구성 요소이며 JFrame과 같은 피어 구성 요소보다 Java에서 더 잘 반응합니다.

귀하의 선택은 즐겁고 재미있는 프로그래밍을 즐기십시오.

+0

아, 게임용이라면 isFocusable 메서드를 재정의하고 true를 반환하여 키 누르기를 포착 할 수 있습니다. – Snicolas

+0

도움을 주셔서 감사합니다. 이 기능은 더 잘 작동 할뿐만 아니라 JPanel이 제목 표시 줄 아래에 표시되는 성가신 문제를 해결했습니다. –

+0

위로 Java-gaming.org에서 우리는 JComponent가 JPanel보다 정확하다는 단호한 회원이있었습니다. 그의 추측은 올바르게 기억한다면 JPanel (JComponent의 하위 클래스)은 사용되지 않는 기능, 예를 들어 게임에 자주 필요하지 않은 Java 구성 요소를 더 추가 할 수있는 기능을 추가한다는 것입니다. 나는 당신이 사용하는 것 (JComponent와 JPanel 사이)이 그다지 중요하지 않다고 생각한다. –

-1

갱신

내가 원래 질문에 대답하기 때문에이 분야에서 내 지식이 성장하고 난 당신이 인 JPanel를 사용한다 @Snicolas에 동의합니다.

JPanel (스윙 구성 요소이기 때문에)에는 이중 버퍼링 (AWT는 지원하지 않음)에 대한 내장 기능이 내장되어 있으며 더 나은 성능을 제공합니다. (듣기는하지만 처음에는 경험이 없습니다.)

당신은 도움이 문서 찾을 수 있습니다

: http://www.oracle.com/technetwork/java/painting-140037.html#swing

원래 답 :

내가 추천을 당신은 Canvas 또는 구성 요소 또는 JComponent의 서브 클래스. 내 취향은 Canvas입니다. 2d graphics tutorial을 읽어야합니다.

갱신

사용 캔버스는 모든 사용자 입력 이벤트를 수신하고 용기가되는 수하물이 없기 때문에. read more. 패널은 모든 마우스 입력 이벤트를 수신하지 않습니다.

+0

Canvas를 선호하는 이유를 알려주십시오. 왜 JComponent 또는 JPanel에서 사용합니까? 왜 OP가 자동으로 스윙 구성 요소를 사용하도록하기보다는 이중 버퍼링을위한 자체 백 버퍼를 만들도록 요청합니까? –

관련 문제