मैं एक विधि को कॉल करना चाहता हूं confirmExit()
जब जेफ्रेम के शीर्षक बार के लाल बंद बटन पर क्लिक किया जाता है।
मैं उस घटना को कैसे पकड़ सकता हूं?
अगर उपयोगकर्ता आगे नहीं बढ़ना चाहता है तो मैं खिड़की को बंद होने से भी रोकना चाहता हूं।
जवाबों:
import javax.swing.JOptionPane;
import javax.swing.JFrame;
/*Some piece of code*/
frame.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
if (JOptionPane.showConfirmDialog(frame,
"Are you sure you want to close this window?", "Close Window?",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION){
System.exit(0);
}
}
});
यदि आप विंडो को बंद होने से भी रोकना चाहते हैं, जब तक कि उपयोगकर्ता 'हां' नहीं चुन लेता, आप जोड़ सकते हैं:
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
ओवरराइड खिड़की बंद करने की विधि।
public void windowClosing(WindowEvent e)
जब खिड़की बंद होने की प्रक्रिया में है, तो इसे लागू किया जाता है। इस बिंदु पर निकट संचालन को ओवरराइड किया जा सकता है।
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
भी काम करता है। पहले JFrame नामक फ़्रेम बनाएं, फिर नीचे इस कोड को जोड़ें।
confirmExit()
विधि को निष्पादित नहीं करता है क्योंकि ओपी इसे पसंद करेगा
confirmExit()
जब [एक्स] पर क्लिक किया गया है।" और पिछली टिप्पणी OQ से असंबंधित है।
यह काम कर सकता है:
jdialog.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) {
System.out.println("jdialog window closed event received");
}
public void windowClosing(WindowEvent e) {
System.out.println("jdialog window closing event received");
}
});
स्रोत: https://alvinalexander.com/java/jdialog-close-closing-event
यह वही है जो मैंने मेनू विकल्प के रूप में रखा है जहां मैंने एक बटन पर एक JFrame
और प्रदर्शित करने के लिए बनाया है JFrame
। मैं चाहता था कि केवल नया फ्रेम दिखाई दे, और इसके पीछे के हिस्से को नष्ट न किया जाए। मैंने शुरू में पहले छुपाया JFrame
, जबकि नया दिखाई दिया। नए के बंद होने पर JFrame
, मैंने इसका निस्तारण किया और पुराने को फिर से दिखाई देने की एक कार्रवाई की।
नोट: निम्नलिखित कोड रवींद्र के उत्तर का विस्तार है और ng
एक है JButton
:
ng.addActionListener((ActionEvent e) -> {
setVisible(false);
JFrame j = new JFrame("NAME");
j.setVisible(true);
j.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
setVisible(true);
}
});
});
इसे इस्तेमाल करे:
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
यह काम करेगा।
implements WindowListener
को इस कोड को काम करने के लिए घोषित करना होगा? यदि हां, तो उत्तर में इसे शामिल करना अच्छा हो सकता है। अन्यथा यह एक सुरुचिपूर्ण समाधान है।