2010-12-11 4 views
2

마우스 위치에 따라 JTable 스크롤의 행을 가질 수 있습니까?JTable 마우스 위치로 스크롤

즉 커서가 테이블의 상단에 가까워지면 위로 스크롤하기 시작하고 테이블의 바닥에 가까워지면 아래로 스크롤하기 시작합니다. AS3에서이 효과와 유사

:

http://activeden.net/item/professional-dock-menu-as2-and-as3/127450

내가 현재 사용하고 있습니다

int row = table.rowAtPoint(e.getPoint()); 
Rectangle r = table.getCellRect(row,0,true); 
table.scrollRectToVisible(r); 

을의 mouseMoved 리스너 내에서 커서가 위/아래에 도달 할 때 한 번 스크롤하는 열. 나는 (비록 사용자가 마우스를 계속 움직이게하기 위해 마우스를 계속 움직여야 만 할 것입니다.) 스크롤링을 유지하는 방법을 모르겠습니다.

답변

1

마우스가 테이블에 들어가면 스윙 타이머를 시작해야 할 것입니다. mouseMoved 이벤트에서 마우스가 테이블 위/아래에 상대적인지 여부에 따라 Timer 간격을 변경하여 더 빠르거나 느리게 만들 수 있습니다. 그런 다음 Timer가 실행되면 MouseInfo 클래스를 사용하거나 마지막 mouseMoved 포인트를 저장하여 마우스 위치를 가져 와서 한 행 위/아래로 스크롤할지 여부를 결정할 수 있습니다.

+0

고마워요. 나는 타이머 옵션에 대해 생각해 봤지만 mouseEntered에서 시작하는 것에 대해 생각하지 않았습니다. 마지막 mouseMoved 포인트를 저장하는 것에 대해 생각하지 않았습니다. 둘 다 매우 유용합니다. 그러나, 나는 마우스가 테이블 상단/하단에 상대적인 위치에 따라 적절한 간격을 계산하는 방법을 여전히 잃어 버렸습니다. 화면에 현재 얼마나 많은 행이 표시되는지, 그리고이 행들의 범위를 알 수있는 간단한 방법이 있습니까? 예 : 6 번에서 34 번 행이 현재 보입니다. 마우스가 10 번 행을 넘었습니다. 다시 한 번 답을 알려주십시오. – tre

+0

내 마지막 코멘트를 무시하고, JViewport를 사용하고 뷰포트가 변경 될 때마다 실행하는 방법을 찾았습니다. – tre

관련 문제