2012-11-26 1 views
0

나는 JPanel에서 상속하는 클래스를 가지고있다. 그것은 DrawingPanel이라고하며이 클래스에서 나는 Graphics2D를 사용하여 선과 도형을 그리고 나는이 모양에서 일부 작업을 수행하는 사용자의 마우스의 위치를 ​​사용합니다.JPanel의 모든 내용을 이동하는 방법은 무엇입니까?

패널의 그림은 화면에 많은 공간을 차지할 수 있습니다 (예 : (-200, -300)에서 (2000, 1000)까지 선을 그릴 수 있음) 실제로 드로잉의 일부만 볼 수 있습니다 . 그래서 스크롤을 사용하여 내 패널에 그려진 모든 것을 옮길 수 있기를 바랍니다.

이 할 수있는 간단하고 우아한 해결책이 있나요, 그리고 내 코드에 너무 많은 변경이 필요하지 않을까요?

편집 실제로는 내 문제는 Graphics2D으로 그려진 모양의 JPanel에서 스크롤하는 우아한 방법을 모른다는 것입니다. JScrollPane에 내 JPanel을 추가하려했지만 작동하지 않았습니다. 실질적으로 코드에 무엇을 추가해야합니까?

+0

"그래서 JPanel에 그려진 모든 것을 스크롤 할 수 있기를 바랍니다." 이것은 스크롤링이 본질적으로하는 것이 아닙니까? 뷰포트를 캔버스의 다른 영역으로 이동 하시겠습니까? 이것은 물리학 상대성과 비슷합니다. 뷰포트 이동은 이동하는 셰이프와 같습니다. – thatidiotguy

+0

가장 우아한 해결책은 다음 중 하나입니다 : a) 정의 된 크기 (범위 및 축척)의 'BufferedImage'로 시작하여 스크롤 창에서 레이블에 표시하거나 b) 그려진 패널의 기본 크기를 반환합니다. X/Y 범위의 전체 범위를 지정하고 그릴 때 그래픽을 변형 (맞도록 변환) 한 다음 스크롤 창에 표시합니다. –

+1

@AndrewThompson DooDoodle http://stackoverflow.com/questions/12683533/drawing-a-rectangle-that-wont-disappear-in-next-paint/12683632#12683632 좋은 예가 될 것입니다! :) –

답변

1

1 개 인자, 그래픽 오브젝트를 (예를 들어)라는 별도의 방법, draw에 드로잉 코드를 넣습니다. 당신 translate() 그래픽 도면의 tonwhoch 지역에 따라 오브젝트 paintComponent 방법에서
이 표시 한 다음 draw 방법으로 전달해야합니다.

+0

전에이 솔루션에 대해 생각하지 않은 것은 수치스러운 일입니다. 완벽하게 작동했습니다. 감사. – Fitz