2D 게임을 애플릿에서 JFrame으로 변환 중입니다. JPanel을 JFrame에 추가하고 JPanel을 드로잉 표면으로 사용해야한다는 것을 알고 있지만 서브 클래 싱해야하는 것이 무엇인지 정확히 알지 못합니다. 나는 JFrame으로 시도하고 있었지만, JFrame을 확장하는 것은 일반적으로 불필요하고 나쁜 아이디어라고 읽었다. (나는 어쨌든 추가 기능을 추가하지 않았다. JPanel의 paintComponent()
메서드를 재정의해야하므로 지금 JPanel을 확장하는 방향으로 기울이고 있습니다. 2D 게임 표면을 만드는 더 좋은 방법이 있습니까? 아니면 JPanel을 확장하고 JFrame에이를 추가하는 적절한 방법입니까?JPanel을 확장하여 2D 게임의 드로잉 서페이스를 만드는 것이 적절합니까?
답변
아니요, 더 좋은 방법은 없습니다. 아주 좋은 방법입니다. JFrame (다른 옵션)을 확장하면 대부분의 Windows 제품군 OS에서 애니메이션이 깜박입니다.
JPanel은 순수 스윙 구성 요소이며 JFrame과 같은 피어 구성 요소보다 Java에서 더 잘 반응합니다.
귀하의 선택은 즐겁고 재미있는 프로그래밍을 즐기십시오.
아, 게임용이라면 isFocusable 메서드를 재정의하고 true를 반환하여 키 누르기를 포착 할 수 있습니다. – Snicolas
도움을 주셔서 감사합니다. 이 기능은 더 잘 작동 할뿐만 아니라 JPanel이 제목 표시 줄 아래에 표시되는 성가신 문제를 해결했습니다. –
위로 Java-gaming.org에서 우리는 JComponent가 JPanel보다 정확하다는 단호한 회원이있었습니다. 그의 추측은 올바르게 기억한다면 JPanel (JComponent의 하위 클래스)은 사용되지 않는 기능, 예를 들어 게임에 자주 필요하지 않은 Java 구성 요소를 더 추가 할 수있는 기능을 추가한다는 것입니다. 나는 당신이 사용하는 것 (JComponent와 JPanel 사이)이 그다지 중요하지 않다고 생각한다. –
갱신
내가 원래 질문에 대답하기 때문에이 분야에서 내 지식이 성장하고 난 당신이 인 JPanel를 사용한다 @Snicolas에 동의합니다.
JPanel (스윙 구성 요소이기 때문에)에는 이중 버퍼링 (AWT는 지원하지 않음)에 대한 내장 기능이 내장되어 있으며 더 나은 성능을 제공합니다. (듣기는하지만 처음에는 경험이 없습니다.)
당신은 도움이 문서 찾을 수 있습니다: http://www.oracle.com/technetwork/java/painting-140037.html#swing
원래 답 :
내가 추천을 당신은 Canvas 또는 구성 요소 또는 JComponent의 서브 클래스. 내 취향은 Canvas입니다. 2d graphics tutorial을 읽어야합니다.
갱신
사용 캔버스는 모든 사용자 입력 이벤트를 수신하고 용기가되는 수하물이 없기 때문에. read more. 패널은 모든 마우스 입력 이벤트를 수신하지 않습니다.
Canvas를 선호하는 이유를 알려주십시오. 왜 JComponent 또는 JPanel에서 사용합니까? 왜 OP가 자동으로 스윙 구성 요소를 사용하도록하기보다는 이중 버퍼링을위한 자체 백 버퍼를 만들도록 요청합니까? –
- 1. Java2D에서 드로잉 할 하위 구성 요소 (2D 게임의 경우)
- 2. AABB가없는 게임의 2D 충돌
- 3. 이 것이 .NET에서 적절합니까?
- 4. 투명한 NSWindow의 2D 드로잉
- 5. 드로잉 2D 줄무늬
- 6. OpenGL에서 2D 드로잉 만들기
- 7. 안드로이드 2D 드로잉
- 8. Java 게임의 2D 충돌 문제
- 9. CoerceValueCallback에서 예외를 throw하는 것이 적절합니까?
- 10. DTO에 기능을 추가하는 것이 적절합니까?
- 11. ContentPresenter.Content를 UIElement로 전송하는 것이 적절합니까?
- 12. API에서 ReactiveCollection을 사용하는 것이 적절합니까?
- 13. 3d 파일에서 2D 드로잉 만들기
- 14. 캔버스를 사용한 GWT 2D 드로잉
- 15. 석영 2D 드로잉 프리미티브 회전
- 16. Java 2D 드로잉 프레임 워크
- 17. Netbeans 6.x에서 2D 드로잉
- 18. 네트워크로 연결된 2D 게임의 지연 보상
- 19. 안드로이드 2D 드로잉 앱을위한 최상의 접근 방법
- 20. 파이썬에서 3D 서페이스를 렌더링하는 방법
- 21. 드로잉 응용 프로그램의 스크린 샷 만들기 + 2D 모양의 드로잉 개요
- 22. JPanel을 투명하게 만드는 방법은 무엇입니까?
- 23. 2D 게임의 물 효과 "android". 어디서 시작하나요?
- 24. OpenGL 2D 플랫폼 게임의 손전등 효과
- 25. Quartz 2D 드로잉 RGB가 알파 페이딩 UIView
- 26. 드로잉 2D 스프라이트 (비트 맵) 효율적으로 타일링하기
- 27. 문서 본문에 Javascript를 삽입하는 것이 언제 적절합니까?
- 28. UIPopoverController. 그 안에 tableViewController를 포함시키는 것이 적절합니까?
- 29. 여기에 삼항 연산자를 사용하는 것이 적절합니까?
- 30. 헤더 태그 안에 이미지를 사용하는 것이 적절합니까?
정확합니다. JPanel 또는 JComponent를 사용하고 paintComponent를 재정의하십시오. super 메소드를 호출 한 직후 paintComponent 메소드에서 그릴 BufferedImage로 백그라운드 드로잉을 수행하십시오. 스프라이트는 BufferedImage 위의 paintComponent 메소드에서 직접 그려 질 것입니다. 또한 그의 좋은 recs를 위해 @ Snicolas에 1+. –