2013-04-30 4 views
18

मैं एक सरल GUI है कार्रवाई श्रोता जोड़ने:जावा स्विंग के लिए EXIT_ON_CLOSE

public class MyGUI extends JFrame{ 

     public MyGUI(){ 
      run(); 
     } 

     void run(){ 
      setSize(100, 100); 
      setVisible(true); 
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// maybe an action listener here 
     } 
    } 

मैं चाहूँगा इस संदेश को प्रिंट करने की:

System.out.println("Closed"); 

जब जीयूआई बंद कर दिया है (जब एक्स दबाया जाता है)। मैं उसे कैसे कर सकता हूँ?

उत्तर

44

इसे आजमाएं।

addWindowListener(new WindowAdapter() 
     { 
      @Override 
      public void windowClosing(WindowEvent e) 
      { 
       System.out.println("Closed"); 
       e.getWindow().dispose(); 
      } 
     }); 
+0

बिल्कुल सही जवाब है, धन्यवाद। – Sam

0

एक और संभावना Window वर्ग से dispose() ओवरराइड करने के लिए हो सकता है। इससे आसपास भेजे गए संदेशों की संख्या कम हो जाती है और यदि डिफ़ॉल्ट बंद ऑपरेशन DISPOSE_ON_CLOSE पर सेट किया गया है तो यह भी काम करता है।

Concretely यह आपके वर्ग MyGUI को

@Override 
public void dispose() { 
    System.out.println("Closed"); 
    super.dispose(); 
} 

जोड़ने का मतलब है।

नोट: super.dispose() पर कॉल करना न भूलें क्योंकि यह स्क्रीन संसाधन जारी करता है!

0

लिखें अपने JFrame के निर्माता के भीतर इस कोड:

this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
    this.addWindowListener(new java.awt.event.WindowAdapter() { 
     @Override 
     public void windowClosing(java.awt.event.WindowEvent e) { 
      System.out.println("Uncomment following to open another window!"); 
      //MainPage m = new MainPage(); 
      //m.setVisible(true); 

      e.getWindow().dispose(); 
      System.out.println("JFrame Closed!"); 
     } 
    }); 
संबंधित मुद्दे