2009-05-22 10 views
5

मैं एक मुख्य फ्रेम से पॉप-अप के रूप में एक जेएफआरएएम का उपयोग कर रहा हूं, जहां उपयोगकर्ता को कुछ जानकारी दर्ज करना है और फिर ठीक दबाएं। लेकिन समस्या यह है कि एक बार यह सब-फ्रेम खोला जाने के बाद, मैं चाहता हूं कि प्रोग्राम ठीक बटन दबाए जाने तक किसी भी अन्य सिग्नल को अनदेखा कर दे, जैसा कि जॉइनपेन्स के साथ किया जाता है। जैसा कि अब है, आप उप-फ्रेम को कई बार खोलने के लिए बटन पर क्लिक कर सकते हैं, इस प्रकार कई फ्रेम प्राप्त कर सकते हैं, और यह इरादा नहीं है (यह भी बहुत सारी बग का कारण बनता है)।जावा में जेएफआरएम

मैं इसे एक बुलियन के साथ हल कर सकता हूं जो ठीक बटन दबाए जाने के बाद सच है, लेकिन यह ठीक करने के लिए एक शानदार तरीका प्रतीत नहीं होता है। मुझे लगता है कि ऐसा करने का कोई और तरीका होना चाहिए, क्योंकि मैं अपने जॉइंटपेन से आने वाले मांग को देख सकता हूं, लेकिन इसे प्राप्त नहीं कर सकता।

चीयर्स।

+0

स्वीडन से Mats_SX? आप किसी भी मौके से विरोधाभास मंच पर नहीं हैं, है ना? –

+0

मैं बहुत ज्यादा हूं। अक्सर ओटी और ईयू 2 अनुभाग :) –

+0

फिर आप मुझे पहले ही जानते हैं (मैं अपने अंतिम नाम के बजाय अपना पहला नाम उपयोग करता हूं)। –

उत्तर

10

आपको modal = true के साथ JDialog की आवश्यकता है। जावाडॉक्स से:

modal - निर्दिष्ट करता है कि संवाद दिखाए जाने पर अन्य शीर्ष-स्तरीय विंडो में संवाद इनपुट उपयोगकर्ता ब्लॉक करता है या नहीं।

+0

तो जेएफआरएएम के साथ ऐसा करने का कोई तरीका नहीं है? –

+2

आसानी से नहीं। लेकिन यहां एक जेएफआरएएम का उपयोग करने का वास्तव में कोई कारण नहीं है; एक जेडियलोग जेएफआरएएम कर सकता है लगभग कुछ भी कर सकता है, इसे ऑपरेटिंग सिस्टम द्वारा पूरी विंडो के रूप में नहीं माना जाता है। एक जेडियलॉग इस तरह की चीज के लिए है (कुछ इनपुट इकट्ठा करने के लिए बस एक छोटी सी खिड़की)। –

+0

मुझे याद होगा। इस मुद्दे का विवरण यह है कि यह स्कूल के लिए एक परियोजना है, और मैं प्रोजेक्ट मैनेजर बनता हूं। मैंने खुद को वह कोड नहीं लिखा है, मुझे बस उस बग से निपटना है जो इसके कारण हुआ है। इसलिए मैंने माना कि एक जेएफआरएम का उपयोग किया जाना था, लेकिन भविष्य के मुकाबले इसी तरह के कार्यों के साथ, मैं इसके बजाय जेडियलॉग का उपयोग करूंगा। –

6

बस JFrame को JDialog पर बदलें।

फिर निर्माता उपयोग में इस लाइन:

setModal(true); 

आपका एप्लिकेशन को अवरुद्ध जब तक संवाद बॉक्स बंद कर दिया है होगा।

यदि आप उपयोगकर्ता String पर प्रवेश कर रहे हैं तो आप JOptionPane.showInputDialog() पर देख सकते हैं।

+0

अच्छी तरह से, वे तीन अलग-अलग स्ट्रिंग्स में प्रवेश कर रहे हैं, और इन स्ट्रिंग्स को देखने की अनुमति देने के बारे में कुछ आवश्यकताएं हैं। –

+0

इस तरह के कस्टम reqs के साथ आप शायद अपने स्वयं के कस्टम JDialog – jjnguy

+0

बनाना चाहते हैं, हालांकि आप अभी भी जॉप्शनपेन के साथ ऐसा कर सकते हैं। जॉप्शनपेन को "संदेश" तर्क एक ऑब्जेक्ट है। यदि एक स्ट्रिंग है, तो यह स्ट्रिंग का टेक्स्ट प्रदर्शित करता है, लेकिन आप अन्य कस्टम सामग्री प्राप्त करने के लिए एक JComponent पास कर सकते हैं। लेकिन मैं "एक मोडल जेडियलॉग का उपयोग करें, यही उनके ऊपर" उत्तर के लिए सहमत है। –

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