2012-11-21 3 views
0

주위에 사각형을 그립니다 :자바 - 나는 다섯 개 개의 버튼이 포함 된 프로그램이 원

내가) 광장 II) 사각형 III) 원 ⅳ) 처음 네 개의 버튼 중 하나에 삼각형 V) 지우기

클릭 그릴 것 드로잉 캔버스의 각 모양은 다음 코드를 사용하십시오.

도형을 드래그 할 수 있습니다. 또한 크기를 조정해야합니다. 마우스의 커서를 모양의 네 모서리 (NW, NE, SW, SE) 주위로 변경하려고했습니다. 사각형과 사각형에는 네면이 있기 때문에 제대로 작동합니다. 그러나 원 및 삼각형에 대해 동일한 문제를 구현하는 데 문제가 있습니다. 문자열 SHAPE_TYPE이 원이 포함 된 경우 사용자가 볼 수 있도록, 예를 들어, 그것을 주위에 테두리를 그립니다

내가하고 싶은 것은 :

내가 내의 mouseClicked 이벤트에 무슨 짓을 모양의 경계.

이 어떻게 국경을 그릴하시기 바랍니다 수 있습니다

그러나, 나는 그냥 if 문 내부에 다음 코드를 사용할 수없는 이유는 무엇입니까? 감사합니다 :)

+2

왜'paint (..) '를 사용하고 있는데'JPanel'을 사용해야하고'paintComponent (..)'를 오버라이드해야합니다. 여기에 ['paintComponent (..)']의 사용법이 있습니다 (http://stackoverflow.com/questions/13358658/paintcomponent-draws-other-components-on-top-of-my-drawing/13359279#13359279).). 또한 [SSCCE] (http://sscce.org)를 게시하면 더 빨리 도움을받을 수 있습니다. –

+0

그게 강사가 우리에게 한 말입니다. GUI 프로그래밍에 익숙하지 않습니다. 사실, 이것은 제 첫 번째 Java GUI 프로젝트입니다. – Matthew

+0

기본적으로 모든 모양에는 고유 한 클래스가 있으며 각 클래스에는 해당 페인트 메서드가 들어 있습니다. Shapes라고 불리는 클래스도 있는데, 이것은 원래의 페인트 메소드가있는 곳입니다. – Matthew

답변

1

당신은 MouseListener 방법으로 페인팅을 할 수 없다는 것이 맞습니다. 할 수있는 일은 mouseClicked 방법에서 shapeUnderMouse으로 설정 한 다음 repaint으로 전화하십시오. 시각적으로 변화하는 영역 만 다시 칠하면 성능이 향상되지만 반드시 필요한 것은 아닙니다.

if (shapeUnderMouse != null) 블록은 paint 방법으로 배치해야합니다.

관련 문제