2016-06-29 1 views
0

NatTableExamples-1.4.0을 사용해 보았는데 과 _900_test\viewportSelection\ViewportSelectionHideShowDataLayerExample을 사용하려고했습니다. 다음NatTable의 ShowRowInViewportCommand 사용

I가 createExampleControl 방법 overloaded onStart() 방법으로부터 얻어진 nattable 객체를 저장 :

@Override 
public void onStart() { 
     nattable.doCommand(new ShowRowInViewportCommand(nattable.getLayer(), 35)); //didn't work 
     nattable.doCommand(new SelectRowsCommand(nattable.getLayer(), 0, 35, false, false)); //worked, can see the row selected after scrolling down 
    } 

여기 SelectRowsCommand 일했다. 인덱스 위치 변환으로 인해 행 36이 선택되는 것을 보았습니다.

그러나 UI에서 ShowRowInViewportCommand의 효과를 보지 못했습니다. 나는 행 36이 자동으로 보일 것으로 예상했다.

ShowRowInViewportCommandHandler이 (가) 있습니다. 디버깅하는 동안 컨트롤이 ShowRowInViewportCommandHandler.doCommand 메서드에 도달했는지 확인했습니다.

자동 스크롤을 보려면 어떻게해야합니까?

답변

0

접근 방법에 타이밍 문제가 있습니다. 보이는 것을 보이게하고 아직 렌더링되지 않은 위치로 스크롤하려고합니다. 렌더링되지 않은 무언가에 스크롤을 어떻게 실행해야합니까? Shell이후에onStart()으로 개설됩니다.

시작시 자동 스크롤을 실행하려면 렌더링이 완료된 후에 실행되는 수신기를 구현해야합니다. PaintListener을 사용하십시오.

this.nattable.addPaintListener(new PaintListener() { 

    @Override 
    public void paintControl(PaintEvent e) { 
     nattable.doCommand(new SelectRowsCommand(nattable, 0, 35, false, false)); 
     nattable.removePaintListener(this); 
    } 
}); 

BTW, 당신도 SelectRowsCommandShowRowInViewportCommand 자동으로 뷰포트에 선택한 행을 이동 실행 할 필요가 없습니다.

+0

위 코드를 많은 예제와 함께 사용했지만 _513_FreezeExample을 제외하고는 작동했습니다. 레이어가 다르다는 것을 이해합니다. _513_FreezeExample을 사용하여 SelectRowsCommand를 수행하는 방법? – Apurv