2011-12-17 14 views
8

सक्रिय (फोकस) फ्रेम (JInternalFrame) कैसे प्राप्त करें जो JDesktopPane के अंदर है? मुझे अपने एमडीआई नोटपैड के लिए इसकी आवश्यकता है (नहीं कि कोई इसका उपयोग करेगा, सिर्फ एक प्रशिक्षण परियोजना)। एपीआई को देखते हुए, मैं केवल सभी आंतरिक इंफ्रास्ट्रक्चर प्राप्त करने के लिए फ़ंक्शंस देखता हूं, सक्रिय नहीं।JDesktopPane - सक्रिय फ्रेम कैसे प्राप्त करें

उत्तर

10

उपयोग JDekstopPane.getSelectedFrame() विधि (डॉक से:। इस JDesktopPane में वर्तमान में सक्रिय JInternalFrame, या अगर कोई JInternalFrame वर्तमान में सक्रिय है अशक्त) या JDesktopPane.getAllFrames() सभी JInternalFrames वर्तमान डेस्कटॉप में दिखाया गया है की सूची प्राप्त और isSelected() विधि की जाँच करने के।

+1

धन्यवाद। आपने वास्तव में मेरी मदद की। मैंने कुछ प्राप्त करने की कोशिश की जैसे एक्टिवफ्रेम या getFocusedFram और अनदेखा getSelectedFrame;) –

+1

+1 एपीआई का उपयोग करने के लिए। ढीले युग्मन के लिए – camickr

2

List<JInternalFrame> बनाएं और isSelected() को जांचें, जैसा कि आप इसे फिर से करते हैं।

परिशिष्ट: यह example भी देखें जो मेनू से आंतरिक फ्रेम का चयन करने के लिए Action का उपयोग करता है।

+3

ध्यान दें कि [JDesktopPane.getAllFrames()] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JDesktopPane.html#getAllFrames()) एक सरणी देता है, तो हो सकता है कि आप साथ ही सरणी को फिर से चालू करें (सूची का उपयोग करने के बजाय)। पहिया को पुनर्निर्मित करने के लिए –

+1

-1। या तो getSelectedFrame() या getAllFrames() का उपयोग किया जाएगा। – camickr

+0

यह एक उचित पुलिस है। – trashgod

2

क्या आपने How to Use Internal Frames शीर्षक वाले जावा ट्यूटोरियल को देखा है? आपके कोड में आपको InternalFrameListener (API) (Tutorial) की आवश्यकता है और ईवेंट को सक्रिय/निष्क्रिय करने के लिए सुनो। सक्रिय मतलब है कि आंतरिक फ्रेम शीर्ष पर लाया गया था; निष्क्रिय मतलब यह अब शीर्ष पर नहीं है। चूंकि JDesktopPaneJLayeredPane बढ़ाता है, इसलिए आप इसमें जोड़े गए घटकों के जेड-ऑर्डर भी सेट कर सकते हैं।

सभी पैनों पर पुनरावृत्ति न करें - घटनाओं का उपयोग करें।

यदि किसी कारण से आप किसी ईवेंट-संचालित दृष्टिकोण का उपयोग करने के बजाय अपने यूआई को मतदान करना पसंद करते हैं तो आप getSelectedFrame पर कॉल कर सकते हैं जो सक्रिय JInternalFrame देता है। मुझे यकीन नहीं है कि किसी और ने इसका उल्लेख क्यों नहीं किया।

+0

+1। क्या आप विस्तार से समझा सकते हैं? – trashgod

+0

@trashgod यह बहुत सरल है, क्योंकि 'JInternalFrames' को' InternalFrameListener' बनाया गया है जो प्रत्येक फ्रेम से सक्रिय है और कौन सा नहीं है। अगर पोस्टर घटनाओं की परवाह नहीं करता है तो मैंने अपना जवाब थोड़ा सा अपडेट कर दिया है - 'जेडीस्कटॉपपेन' में 'getSelectedFrame' विधि है। – Paul

+0

> अपने कोड में आपको एक इंटरनलफ्रेम लिस्टनर (एपीआई) (ट्यूटोरियल) की आवश्यकता है और घटनाओं को सक्रिय/निष्क्रिय करने के लिए सुनो। > सक्रिय मतलब है कि आंतरिक फ्रेम शीर्ष पर लाया गया था; निष्क्रिय मतलब यह अब शीर्ष पर नहीं है। > चूंकि जेडीस्कटॉपपेन जेएलएर्डपेन बढ़ाता है, इसलिए आप इसमें जोड़े गए घटकों के जेड-ऑर्डर भी सेट कर सकते हैं। " दूसरे शब्दों में" अपने कोड को और अधिक भ्रमित और कम सीधा कैसे बनाएं "पर एक और युक्ति। धन्यवाद, हालांकि मैं रखूंगा मेरा कोड इतना आसान है कि यदि आपने जावा का कभी भी उपयोग नहीं किया है तो भी आप इसे समझेंगे। –

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