2010-02-28 9 views
20

मेरे पास जेफ्रेम 1 का जेबटन 1 निजी सदस्य है और जब मैं बटन क्लिक करता हूं तो फ्रेम को बंद करना चाहता था।बटन के साथ जेएफआरएम बंद करना

jButton1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) 
    { 
    } 
}); 

मैं super.close() करना चाहता था लेकिन सुपर के लिए करीब नहीं मिल सका। वहाँ किसी तरह JFrame की JFrame

उत्तर

2

आप बिल्ली उपयोग setVisible() विधि (और false के लिए दृश्यता सेट) या dispose() विधि है जो अधिक close आपरेशन के समान है का उल्लेख करने के लिए है।

32

आपको उस विशिष्ट फ्रेम के संदर्भ की आवश्यकता होगी जिसे आप बंद करना चाहते हैं लेकिन मानते हैं कि आपके पास संदर्भ dispose() फ्रेम को बंद करना चाहिए।

jButton1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) 
    { 
     frameToClose.dispose(); 
    } 
}); 
+0

जबकि यह सच है, तो आप पास घटना जब आप इसे इस तरह से कर के साथ जुड़े सभी EventListeners छोड़ ... – Vogel612

+2

कैसे निपटान के लिए यह (वर्तमान) JFrame ??? –

9

ऐसा लगता है कि आपके यहां दो मुद्दे हैं। एक यह है कि जेएफआरएएम में close विधि नहीं है, जिसे अन्य उत्तरों में संबोधित किया गया है।

दूसरा यह है कि आपको अपने जेएफआरएएम का संदर्भ देने में परेशानी हो रही है। actionPerformed के भीतर, super एक्शनलिस्टर को संदर्भित करता है। JFrame उदाहरण को संदर्भित करने के लिए, MyExtendedJFrame.super का उपयोग करें (आपको MyExtendedJFrame.this का उपयोग करने में भी सक्षम होना चाहिए, क्योंकि मुझे कोई कारण नहीं दिखता कि आप dispose या setVisible के व्यवहार को ओवरराइड करना चाहते हैं)।

4

आप super.dispose() विधि का उपयोग कर सकते हैं जो निकट संचालन के समान है।

+2

सहायक होने की कोशिश करने के लिए धन्यवाद :-) दुर्भाग्यवश, आपका उत्तर गलत होने की सीमा तक बहुत उपयोगी नहीं है (श्रोता के सुपर का कोई निपटान नहीं है, फ्रेम के सुपर को कॉल करने की आवश्यकता नहीं है, पूर्ण विवरण के लिए @ lins314159 देखें) – kleopatra

9
JButton b3 = new JButton("CLOSE"); 

b3.setBounds(50, 375, 250, 50); 

b3.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) 
    { 
     System.exit(0); 
    } 
}); 
+2

एकल खिड़की अनुप्रयोगों के लिए बढ़िया है, लेकिन यदि आप इसे एक विंडो को बंद करने के लिए उपयोग करते हैं, तो यह अन्य सभी को भी बंद कर देगा ... – geisterfurz007

+0

@acp मैं जावा स्विंग में पिछली कक्षा नहीं, केवल उसी वर्ग को बंद करना चाहता हूं –

संबंधित मुद्दे