2014-05-18 4 views
0

시도하고 싶은 것이 있습니다.이 문제를 어떻게 해결할 것인지 잘 모릅니다.이미지가 포함 된 JLabel을 사용하여 자동 스크롤

GridLayout을 사용하여 JLabels의 JPanel을 얻었습니다. 이 JPanel는, JScrollPane에 추가됩니다.

JLabel에 이미지가있는 경우 하나. 그 이미지는 프로그램의 등장 인물이 어디에 있는지 보여 주려고합니다. 난 그냥 JLabal 그래서 그것의 위치를 ​​얻을 수 있습니다. 그래서 기본적으로 캐릭터를 움직이려면 현재 JLabel에서 이미지를 제거하고 다음 JLabel에 이미지를 추가합니다. 나는 이것이 아마도 최악의 접근법 일 가능성이 높지만 새로운 것이라고 생각합니다. 자바가 알고있는 것은 모두 기한이며 Java의 게임 개발을 배우는 것을 생각하지 않았습니다.

어쨌든 JScrollPane을 사용하고 있기 때문에 이미지가있는 JLabel을 더 이상 볼 수 없으면 프로그램이 자동으로 스크롤되기를 바랍니다. 따라서 캐릭터가 움직이면 JSCrollPane이 스크롤되므로 스크롤 할 필요가 없습니다. 그것은 나를 위해 그것을 않습니다. 그래서 카메라가 어디로 가는지 지켜 보는 것과 같습니다.

이것이 가능합니까?

대단히 감사합니다!

+0

숙제와 같습니다. 당신의 능력을 뛰어 넘는 것은 결코 좋은 생각이 아닙니다. 능력의 한계에 고착하고 이미 할 수있는 최선의 프로젝트를 수행하십시오. 문자가 표시되는지 (가장 멀리 보이는 JLabel보다 작은 지) 확인하고 필요한 경우 스크롤하십시오. 아직도, 당신은 당신이 취급 할 수있는 것보다 200 lbs 더 benching하여 근육을 만들 수 없습니다; 당신은 당신이 몇 백 번을 처리 할 수있는 것을 benching하여 그것을 빌드합니다. – Aarowaim

+0

안녕 Aarowaim, 친절한 조언을 주셔서 감사합니다, 정말 고마워. 그리고 너는 맞다. 나는 너무 많이 모른다. 그러나 그것은 숙제가 아니며 실제로는 직장 배치를위한 개발 프로젝트입니다. 내가 뭘 할 수 있는지 보여주고 싶지만 좋아 보이지 않아. 나는 배울 것이 많다. 고맙습니다. :) – Crazziiii

+0

하하, 알겠습니다. 캐릭터가 보이는지 알아내는 데 도움이 필요하면 코드를 게시하고 시도한 것을 보여주십시오. 이미 기본을 알고있는 것처럼 우리가 도울 수 있다고 확신합니다. 스윙 GUI를 해킹하는 대신 실제 그래픽으로 작업하는 것이 더 쉬울 것이라고 생각하십니까? 어쩌면 옆에, 프레임의'public void paint (Graphics g)'에 과부하가 걸리면서 기존 코드를 버리지 마라. – Aarowaim

답변

0

나는이 아마도 문자가 한 번 (이미지의 크기에 따라)에 많은 픽셀을 이동하기 때문에 당신은 정말 끔찍한 운동을 얻을 것이다 이제까지

최악의 접근 방식을 이해합니다.

따라서 문자가 이동함에 따라 JSCrollPane이 스크롤되므로 스크롤 할 필요가 없습니다.

다른 레이블에 아이콘을 추가 한 후에는 레이블의 scrollRectToVisible(..) 메서드를 사용할 수 있습니다. 뷰포트를 매번 강제로 스크롤하려면 Rectangle 크기를 스크롤 패널 뷰포트의 크기와 같게 만들어야합니다. 따라서 레이블이 뷰포트의 중앙에 위치하도록 x/y 위치를 계산해야합니다.

+0

당신은 운동에 대해 옳았고 때로는 이미지가 바뀌지 만 그렇지 않은 경우도 있습니다. 감사합니다. scrollRectToVisible (..) 메소드를 사용해 보겠습니다. :) – Crazziiii

관련 문제