2017-03-29 6 views
0

vaadin에서 Window (com.vaadin.ui)를 확장하는 MyCustomWindow 클래스가 있습니다. MyCustomWindow 버튼을 클릭하면 표시됩니다. 이제이 창에 단추를 추가하고이 단추를 누르면 창을 닫을 것입니다. 이 창을 제거하기 위해 무엇을 사용해야하는지 문제가 있습니다. 내가 발견 :vaadin에서 창을 닫는 방법?

Window w = getWindow(); 
getApplication().removeWindow(w); 

또는

Window w = this.findAncestor(Window.class); 
w.close(); 

그러나이 작동하지 않습니다. "this"를 사용하여 외부가 아닌 클래스 내부에서 창을 제거하고 싶습니다.

UI.getCurrent().removeWindow(this); 

난 당신이 날 도와 줄 수 angel이라는 7. 을 사용하고 있습니다 : 같은 뭔가?

답변

0

이 코드를 사용하여 모든 창을 제거 할 수 있습니다. 당신이 다음 두 가지 중 하나를 수행 할 수 있습니다 클릭 리스너 내부에서 창을 닫으려면

UI.getCurrent().removeWindow(window); 
+0

좋은데, "이"를 사용하여 외부에서가 아니라 클래스 내부에서 창을 제거하고 싶습니다. – user2856064

+0

모든 클래스에서 UI.getCurrent()를 호출 할 수 있습니다. –

+0

어디서나이 루프를 사용할 수 있으며 모든 창을 제거합니다. –

1

안녕하세요 : 이미 창을 참조있는 경우

for (Window window : UI.getCurrent().getWindows()) 
     { 

      UI.getCurrent().removeWindow(window); 
      window.close(); 
     } 

그러나 당신이 필요로하는 모든이입니다 일 :

yourButton.addClickListener(new Button.ClickListener() { 
      @Override 
      public void buttonClick(Button.ClickEvent event) { 
       MyCustomWindow.this.close(); 
      } 
     }); 

또는 :

yourButton.addClickListener(new Button.ClickListener() { 
      @Override 
      public void buttonClick(Button.ClickEvent event) { 
       closeMyCustomWindow(); 
      } 
     }); 

private void closeMyCustomWindow(){ 
    this.close(); 
} 

closeMyCustomWindow()이 함수는 MyCustomWindow 클래스 내에 있습니다.