2011-10-27 3 views
2

그래서 보이는 JScrollBar에 대한 생성자가 있습니다 :JScrollBar가 생성자에서 긴 값을 가져 오게하려면 어떻게해야합니까?

내 데이터 크기가 int 같은 한계를 넘을 수 있기 때문에 int 값을 오래 있어야합니다.

public JScrollBar(int orientation, long value, long extent, long min, long max) 

JScrollBar 용으로이 생성자를 구현하는 가장 좋은 방법은 무엇입니까? 그 값은 어디 에나 있기 때문에 JScrollBar를 완료 할 수 있을까요? 아니면 이것을 할 수있는 다른 방법이 있습니다.

참고 : JscrollBar를 완전히 다시 작성한 경우 swing.DefaultBoundedRangeModel 역시 int를 사용하기 때문에 덮어 써야합니다. 이것은 최선의 접근 방법이 아닌 것 같아 누구도 더 좋은 아이디어를 가지고 있습니까?

답변

3

실제 변경 사항을 제대로 감지하려면 화면 해상도가 부족한 경우가 있습니다. 콘텐츠를 스크롤하면 스크롤 막대가 움직이지 않습니다. 또는, 사용자는 스크롤 바를 이동 시켜서 새로운 영역으로 이동시켜 방향 감각을 잃게됩니다.

32 비트 정수는 2 억 개의 양수입니다. 화면 해상도가 1,000 픽셀이라도 사용자는 스크롤 막대의 픽셀 이동이 스크롤하려는 대상의 2,147,483 픽셀을 나타낼 수 있기 때문에 스크롤 막대를 제어 할 수 없습니다 (확대/축소 비율이 1 : 1 인 경우). 그래서 나는 스크롤 레벨에 줌 레벨을 맵핑하는 방법을 생각할 것입니다. 그래서 어떤 레벨에서도 스크롤 할 수 있고 부드럽게 움직일 수 있습니다.

다른 옵션은 확대/축소 컨트롤을 사용하여 큰 이미지에서 확대 된 위치를 보여주는 정사각형의 작은 그림을 보여주는 옵션 일 수 있습니다. 상단 이미지의 그림을 드래그하여 상세 이미지에서 결과를 볼 수 있습니다. 거기에있는 문제는 픽셀 만 이동하면 200 만 픽셀의 움직임을 유지할 수 있으므로 작은 줌 배율에서 큰 이미지를 이동하는 것은 매우 혼란 스러울 것입니다. 그러나 방향을 바꾸지 않는 작은 움직임의 경우 세부보기에서 손 드래그를 사용하십시오. 그 측면에서 JScrollBar를 다시 구현하는 문제가 발생하며 아마도 더 나은 옵션이 될 것입니다.

+1

데이터 묶음에서 버퍼링하므로 범위는 1 - 100이고 위치는 56입니다. 그들이 스크롤 바를 클릭하면 스크롤 바가 내려갈 곳의 그래픽 표현이 아닌 위치 57에있게 될 것입니다. – Grammin

+0

확대/축소 가능 컨트롤 매핑을 만들려고하는 것처럼 들리지만 다소 이상합니다. 스크롤 막대를 사용하고 1000 개의 위치 (즉, 스크롤 막대의 너비가 1000 픽셀 이상인 경우)는 스크롤바가 화면 왼쪽 끝을 맨 왼쪽으로 가리는 경우 엄지 손가락을 움직이는 각 픽셀은 200 만 픽셀을 나타냅니다 . 그렇지 않으면 전체 이미지를 왼쪽에서 오른쪽으로 탐색 할 수 없습니다. 실용적인면에서 보면 확대/축소 개념을 만들고 확대/축소 수준을 스크롤하여 공간을 효율적으로 탐색해야 할 필요가 있다고 생각합니다. – chubbsondubs

+0

각 스크롤 막대 픽셀 이동은 2mp를 나타낼 것이라고 동의하지만 맨 오른쪽의 스크롤 화살표를 클릭하고 스크롤 막대를 움직이지 않지만 여전히 데이터를 이동할 수 있습니다. 그리고 실제 스크롤바를 움직이지 않고 스크롤바 값을 조정하십시오. – Grammin

1

아마도 JScrollBar을 서브 클래 싱하고 setValue을 오버라이드하고 이에 따라 값을 조정 (스케일링)하려고합니다.