2014-04-08 1 views
2

내 CS 과정 최종 프로젝트에 GUI를 사용하여 5 개의 게임을 만들어야합니다. 저는 Graphics2D와 함께 마지막 프로젝트 인 Maze와 함께 작업했으며 Graphics2D로 작업하는 것은 악몽이었습니다. 기껏해야 connect5 보드는 20x20이 될 것이고, 이것은 400의 Area가 될 것입니다. 경계에서 마우스 클릭을 결정하기가 쉽기 때문에 GUI를 처리하기 위해 400 개의 JLabel 배열을 만드는 것이 성능에 미치는 영향에 대해 궁금합니다. 배열 유도를 얻고 다른 유사한 작업과 함께 공간 색상을 변경하는 반면 Graphics2D에서는 동일한 작업이 훨씬 어려울 것입니다. 그래서, 제 질문은 : 많은 JLabel의 배열을 생성하는 것이 바람직하지 않습니까? 그렇다면 다른 대안은 무엇입니까? 모두에게 감사드립니다!JLabel 대 Graphics2D 페인팅 배열

+0

왜 시도하고 어떤 일이 발생하는지 확인하지 마십시오. 400 개의 레이블 배열을 만드는 것은 큰 문제는 아닙니다. '경계 내에서 마우스 클릭을 결정하는 것은 쉬울 것입니다 .' 각 레이블에 동일한 MouseListener를 추가 할 수 있기 때문에 동의합니다. – camickr

답변

1

JLabel 방식은 바람직하지 않을 것이라고 생각합니다. 사용자 지정 그림이있는 하나의 구성 요소가 더 바람직 할 것입니다. 조금 더 쉽게 보이기 때문입니다.

추상적 인 형식의 클래스가 UI 나 다른 요소에 묶여 있지 않은 경우 (보드의 텍스트를 출력 할 수있는 명령 행에서도 재생할 수 있음) 루프를 통과시켜야합니다 보드를 나타내는 공간과 각 슬롯을 그리기위한 드로잉 호출의 작은 세트를 만듭니다 (비어 있는지 여부).

조각이 떨어지는 것과 같은 애니메이션을 소개하고 그 아래 조각을 칠 때 잠시 동안 부딪 치기를 원한다면 더 낫습니다.

+0

"그리기 호출 집합"이라고 할 때 그리기 호출이란 정확히 무엇을 의미합니까? 몇 가지 방법을 그리는거야? 필자가하는 방법을 알고있는 유일한 유형의 그림은 PaintComponent를 오버 라이딩 한 것입니다. UI의 주요 문제가 될 수 있습니다. 어쩌면 좀 더 다재다능한 것이 있을까요? –

+0

드로잉 호출은 Graphics2D 객체와 함께 제공되는 드로잉 메서드를 의미합니다.이 메서드는 재정의 된 paintComponent에있는 것이 바람직합니다. 당신이 그것을하는 방법을 안다면, 당신은 좋은 모습이어야합니다. JComponent를 확장하는 사용자 정의 컴포넌트를 생성하고, Connect5 보드의 표현을 통해 paintComponent 메소드 루프에서 Connect5Board 객체 또는 다른 것을 가지고있는 생성자를 생성하고 조각 또는 빈 슬롯을 하나씩 그립니다. getWidth 및 getHeight와 같은 메서드를 사용하면 그리는 공간을 알 수 있으므로 슬롯을 그리는 크기를 제한 할 수 있습니다. – NESPowerGlove

+0

구성 요소에 MouseListener를 추가 할 수도 있습니다. 특정 열을 클릭하면 Connect5Board 객체를 수정하여 해당 열에 조각을 배치하고 차례가 바뀌는 등 원하는 작업을 변경할 수 있습니다. – NESPowerGlove