2014-07-15 4 views

답변

2

을 간단히 추가하고 windowClosing() 또는 windowClosed() 방법을 재정의하십시오.

WindowListener.windowClosing()은 사용자가 창을 닫으려고 할 때 호출되며 창을 닫으면 WindowListener.windowClosed()이 호출됩니다.

예 : 대화 상자가 닫힐 때까지 모달 대화 상자를 들어

dialog.addWindowListener(new WindowAdapter() { 
    @Override 
    public void windowClosing(WindowEvent e) { 
     System.out.println("User attempted to close the dialog!"); 
    } 
}); 
1

후 대화 상자를 표시하는 호출 후 코드가 계속되지 않습니다. 즉, 비 모달 대화를 들어

JDialog dialog = new JDialog((Frame)null, true); // true = modal 
System.out.println("before"); 
dialog.setVisible(); 
System.out.println("after"); // <-- won't happen until the dialog is closed 

, 당신은 다른 윈도우와 마찬가지로으로, dialog.addWindowListener을 부르는 WindowListener (또는 WindowAdapter) 재정의하거나 당신이 단지 폐쇄를 방지하거나 필요 여부에 따라 windowClosing 또는 windowClosed, 그것을 찾아라.

1

최상의 제어를 위해 Jdialog를 확장 한 대화 상자를 만든 다음 setVisible (boolen 값) 및 dispose() 함수를 덮어 쓸 수있는 고유 한 클래스를 만드는 것이 좋습니다. 기본적으로 사용자가 닫기 버튼 대화 상자를 클릭하면 funciton setVisible (false)으로 이동하지만 setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE)을 사용하여 변경할 수 있습니다. 다음은 간단한 코드입니다.

public class MyDialog extends JDialog { 



     public MyDialog(){ 
     super(); 
     this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     setSize(new Dimension(200,200)); 
     setVisible(true); 
     } 


     public void dispose(){ 
      System.out.println("dialog disposed"); 
      // put your code here 
      super.dispose(); 
     } 


     public void setVisible(boolean value) { 
      System.out.println("dialog set visible : " + value); 
      // or put your code here 
      super.setVisible(value); 
     } 

    } 
관련 문제