2012-04-28 1 views
2

다이어그램 편집기와 비슷한 것을 만들고 싶습니다. 사용자가 캔버스에서 모양을 만들고보고 편집 할 수있게 해주는 응용 프로그램입니다. 내 GUI에는 기본적으로 표준 JMenuBar, 모양에 대한 정보를 표시하는 오른쪽 JPanel 및 모양을 시각화하는 데 사용해야하는 JPanel이라는 세 부분이 있습니다.자바 스윙/AWT - 컨텍스트 메뉴를 사용하여 객체 페인팅

이외에도 모양을 정의하는 패키지가 있습니다. 단순함을 위해 캔버스상의 좌표, 크기, 사용자 정의 이름 및 설명, 색상과 같은 정보가 포함 된 정사각형 만 있다고 가정 해보십시오. 프로젝트의 기본 클래스 (JFrame의 확장)에는 사각형 목록이 포함됩니다.

이제 JPanel에서 drawrect와 엇갈림을 사용하여 도형을 그리는 것으로 시각화 할 수 있지만 대화 형 편집기를 만들고 싶습니다. 사용자가 시각화 된 모양을 마우스 오른쪽 버튼으로 클릭하면 컨텍스트 메뉴가 팝업됩니다 이동하거나 속성을 변경하거나 모양을 완전히 제거 할 수 있습니다. JPanel에서 빈 곳을 클릭하면 사용자가 (다시 메뉴를 통해) 새 모양을 만들 수 있습니다.

수동으로 캔버스의 각 픽셀을 특정 모양으로 매핑하고 오른쪽 클릭시이를 확인하는 것과 달리 자동화 된 방법이 있습니까? 내가 말할 수있는 곳, 예를 들어 여기를 JPanel 안에 그리고 onclick을하면 ... JPanel에서 모양을 편집 할 때 주 응용 프로그램 클래스의 Square/Circle 목록에 어떻게 접근합니까? , 그래서 나는 그것을 정말로 바꿀 수있다? 나는 이것이 간단하다고 생각하지만, 지금 당장 나는 그것을 어떻게 할 것인지 모른다.

올바른 방향으로 날 지점 제발, 아무것도가 이해할 수있을 것이다, 팁, 예제, 관련 튜토리얼에 대한 링크 ...이 작업을 수행하는 가장 일반적인 방법

답변

2

점은 내부에있는 경우 모양이 결정 할 수 있도록하는 것입니다 모양. 다행히도 코드는 객체 지향적이며 모양의 각 유형은 클래스입니다.

당신이해야 할 일은 각 모양에 대해 boolean isInside(point: Point)과 같은 방법을 정의하는 것입니다. 일단 당신이해야 할 일은 모양을 역 z 순서 (위에서 아래로)로 걷고 마우스 클릭 지점이 어디에서 움직이는 지 확인하는 것입니다. 어떤 모양에도 빌려주지 않으면 캔버스를 클릭했습니다. 이 정보가 있으면 적절한 메뉴를 표시 할 수 있습니다. @eugener에 의해 제안

희망이

3

도움의 Shape 인터페이스를 구현하는 클래스는 이것에 대한 유용한 contains() 방법이있다. GraphPanel은 언급 한 여러 기능을 보여주는 예입니다.

관련 문제