2013-08-29 3 views
1

사용자가 창을 닫을 때 뭔가 할 수있는 메서드를 작성해야합니다.닫힌 된 javafx 창 처리기

Scene scene = myTable.getScene(); 


    Window window = null; 
     if (scene != null) 
     { 
     window = scene.getWindow(); 
     System.out.println("scene is not null"); 
     window.addEventHandler(WindowEvent.WINDOW_HIDDEN, new EventHandler<WindowEvent>  
     () 
     { 

     @Override 
     public void handle(WindowEvent w) 
     { 
      System.out.println("do somethong here"); 

     }; 
     }); 

불행하게도 심지어 내 메시지는 "장면이 표시되지 않습니다 null가 아닌 사람이 있습니까 :. 지금까지 (내가 내 컨트롤러 내 초기화 방법에 배치)이 코드를 작성하는 관리했지만 작동하지 않습니다 그것을 수행하는 방법에 대한 좋은 아이디어?

+0

* "불행히도 내 메시지"장면이 null이 아니기 때문에 표시되지 않습니다. * 장면이 'null'이라는 것이 확실하기 때문에 표시되지 않습니다. –

답변

1

테이블의 장면 속성에 변경 리스너를 추가하고 단지 장면이 null이 아닌 값으로 변경 될 때 이벤트 핸들러를 추가합니다.

추천으로 Marc, setOnCloseRequest 또는 setOnHidden을 호출하는 것이 EventHandler를 구성하는 더 좋은 방법 일 것입니다.

2

당신은 사용자가이 같은 setOnCloseRequest() 메소드를 사용한다 창을 닫을 때 뭔가를하려는 경우 :

이제 장면 다음이 코드가 실행되지 않습니다 null 아무것도 할 경우
window.setOnCloseRequest(new EventHandler<WindowEvent>() { 

     @Override 
    public void handle(WindowEvent event) { 
     //do something 
    } 
}); 

약간의 System.out.println(scene);이 발생하면이 문제를 디버그하는 데 도움이됩니다.