2014-06-24 3 views
2

Vaadin에서 일부 값을 표시하는 데 시간이 오래 걸리는 작업을 실행하는 여러 레이아웃 구성 요소가 탭으로 추가되었습니다. 계산 시간을 최소화하기 위해 관련 패널/레이아웃이 표시 될 때만 시간이 많이 소요되는 작업을 실행하고 싶습니다. 일반적인 이벤트 리스너를 시도했지만 해고 당하지 않았습니다. 스윙에서 저는 그러한 사건들에 반응하는 데 익숙합니다. 그런데 바 이딘에서 어떻게합니까?Vaadin을 사용하여 브라우저 뷰포트에 표시되는 AbstractComponent의 리스너

gridLayout.addComponentAttachListener(new ComponentAttachListener() 
    { 
     @Override 
     public void componentAttachedToContainer(
       final ComponentAttachEvent event) 
     { 
      System.err.println("attach-listener-" + event); 
     } 
    }); 

    gridLayout.addLayoutClickListener(new LayoutClickListener() 
    { 
     @Override 
     public void layoutClick(final LayoutClickEvent event) 
     { 
      System.err.println("layoutclick" + event); 
     } 
    }); 

이러한 UI 컨테이너의 콘텐츠에 대해 "지연로드"를 실현하는 것이 중요합니다. 나는 이것이 내가 이것을 깨닫려고 노력한 유일한 사람이 아니라고 확신한다. 당신의 접근 방법은 무엇입니까?

+0

자바 스크립트는 임의의 DOM 요소에 대해 자바 스크립트가 이러한 이벤트 (뷰포트에서 표시/사라짐)를 놓친 것 같습니다. Vaadin이 컴포넌트에서이 이벤트를 실현하는 데 어려움을 겪고있는 이유는 다음과 같습니다. https://stackoverflow.com/questions/1462138/js-event-listener-for-when-element-becomes-visible – PAX

답변

1

실제로 TabSheet을 사용하는 경우 먼저 탭에 빈 레이아웃을 추가 한 다음 tab selection change events을 수신 할 수 있습니다. 빈 레이아웃을 비용이 많이 드는 작업으로 채울 수 있습니다.