2009-11-13 15 views
20

मैंने कस्टम JPanel बनाया है जो छवियों को प्रदर्शित करता है (इसे MyPanel पर कॉल करें), मैंने इसे JFrame की सामग्रीपैन में जोड़ा है।सामग्री के अनुसार जेएफआरएएम का आकार बदलने का तरीका

मैं JFrameMyPanel फिट करने के लिए स्वचालित रूप से आकार बदलने के लिए चाहता हूं जब छवि बदलती है।

ऐसा लगता है कि मुझे ऐसा करने के लिए frame.pack() पर कॉल करने की आवश्यकता है। से pack() पर कॉलिंग बढ़ती है इसलिए मैं ऐसा नहीं करना चाहता हूं।

मुद्दा मैं JFrame बढ़ाया हल करने के लिए और MyFrame पर्यवेक्षक बनाया है, और MyPanel नमूदार (यह MyFrame फोन की सुविधा देता है)। जब भी छवि MyPanel परिवर्तन प्रदर्शित कर रही है तो यह श्रोताओं को सूचित करती है, MyFrame इस उदाहरण के लिए। और फिर MyFrame कॉल करते समय pack() पर कॉल करता है।

क्या इसकी सामग्री के अनुसार JFrame का आकार बदलने का एक आसान तरीका है?

उत्तर

10

आपके द्वारा वर्णित समाधान उचित लगता है।

वैकल्पिक रूप से, जब भी MyPanel अपनी छवि बदलता है, तो यह इसके मूल फ्रेम को ढूंढ सकता है और फिर उस पर पैक पैक() को कॉल कर सकता है। यदि ऐसा कोई फ्रेम मौजूद नहीं है, तो कुछ भी न करें। अतिरिक्त कक्षाएं बनाने की कोई ज़रूरत नहीं है, और यह उतना ही ढीला है जितना आप प्राप्त करने जा रहे हैं। आप आसानी से ऐसा करने के लिए SwingUtilities.getAncestorOfClass() का उपयोग कर सकते हैं।

+1

हाँ, मेरा दृष्टिकोण उचित था। अनुमोदन के लिए धन्यवाद :) – nimcap

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