मुझे लगता है कि क्यों "windowClosed" विधि निम्नलिखित के रूप में अपने परीक्षण कोड में लागू नहीं किया जा रहा है एक मुद्दा है,खिड़की बंद क्यों नहीं किया जा रहा है, क्या कोई मुझे इस बारे में थोड़ा और बता सकता है?
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class Tmp {
class TFrame extends JFrame{
private static final long serialVersionUID = -5729542298504858399L;
public TFrame() {
setTitle("title");
setSize(300, 300);
}
}
public static void main(String[] args) {
final TFrame t = new Tmp().new TFrame();
t.addWindowStateListener(new WindowAdapter() {
@Override
public void windowStateChanged(WindowEvent e) {
super.windowStateChanged(e);
System.out.println(e.getOldState() + "<-old new->" + e.getNewState());
}
});
t.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
super.windowClosed(e);
System.out.println(e.getID() + "closed " + e.getNewState());
}
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
System.out.println(e.getID() + "closing" + e.getNewState());
}
});
t.setVisible(true);
}
}
अगर मैं बयान setDefaultCloseOperation लिखने (JFrame.DISPOSE_ON_CLOSE) या स्पष्ट रूप से कहते हैं निपटान() TFrame को, windowClosed() बुलाया जाएगा।
क्या कोई इसे अधिक विस्तार से समझा सकता है, मैं उलझन में हूं कि खिड़की के लिए श्रोताओं को लिखने का संपत्ति तरीका क्या है(), अग्रिम धन्यवाद।
////////////////// दान से //////////////
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Tmp {
class TFrame extends JFrame {
// ignored .....
t.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
super.windowClosed(e);
System.out.println(e.getID() + "closed " + e.getNewState());
}
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
System.out.println(e.getID() + "closing" + e.getNewState());
int quit = JOptionPane.showConfirmDialog(t, "Are you sure to quit?");
if(quit == JOptionPane.YES_OPTION){
t.dispose();
}
else if (quit == JOptionPane.NO_OPTION){
t.setVisible(false);
}
}
});
t.setVisible(true);
t.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
}
}
आपके उत्तर के लिए धन्यवाद, मैंने jframe.java में setDefaultCloseOperation (..) की जांच की है, यह बताता है कि आपने क्या पोस्ट किया :-)। एक और चीज जो मैं लाना चाहता हूं वह है कि क्या मुझे हमेशा "DISPOSE_ON_CLOSE" पैरामीटर के रूप में उपयोग करना चाहिए यदि मैं विंडो बंद() को कॉल करना चाहता हूं? यह अच्छा होगा अगर कुछ अच्छे और संपत्ति गाइड/कोड स्निपेट दिए जाएंगे। – vicd
यह संदर्भ पर निर्भर करता है। उदाहरण के लिए, यदि आप उपयोगकर्ता को बंद करने से पहले कुछ पूछना चाहते हैं, तो आपको इसे DO_NOTHING_ON_CLOSE के रूप में सेट करना होगा और विंडो पर बंद करना उपयोगकर्ता के लिए प्रश्न प्रदर्शित करेगा और फिर विंडो को निपटाना होगा। –
मुझे यह मिला कि, मैंने आपके सुझाव के अनुसार एक त्वरित डेमो लिखा है, क्या यह कार्यान्वित करने का सही तरीका है? कृपया अद्यतन पोस्ट देखें :-) – vicd