2010-06-12 19 views
12

खोलने पर मुख्य जेएफआरएम को कैसे अक्षम करें उदाहरण के लिए अब मेरे पास एक मुख्य फ्रेम में सभी ग्राहक जानकारी jtable प्रदर्शित है, और एक नया जेएफआरएएम खोलने के लिए एक बटन बनाएं जो उपयोगकर्ता को नया ग्राहक बनाने की अनुमति देता है। मैं नहीं चाहता कि उपयोगकर्ता एक से अधिक निर्माण फ्रेम खोल सके। कोई स्विंग घटक या एपीआई ऐसा कर सकता है? या मुख्य फ्रेम को कैसे अक्षम कर सकते हैं? JDialog की तरह कुछ।नया जेएफआरएएम

उत्तर

11

मेरा सुझाव है कि आप अपना नया ग्राहक संवाद एक मॉडल JDialog बनाते हैं ताकि आप दिखाई देने पर अपने ऐप में अन्य संवाद/फ्रेम से इनपुट की अनुमति न दें। विवरण के लिए modality tutorial पर एक नज़र डालें।

+0

हाय यह वही करता है जो मैं चाहता हूं। बहुत बहुत धन्यवाद – user236501

+0

दूसरी ओर, मोडल यूजर इंटरफेस * बहुत * कष्टप्रद हैं, इसलिए एक ही समय में कई अलग-अलग उपयोगकर्ताओं को संपादित करने की अनुमति देने के लिए जीयूआई को फिर से डिजाइन करने पर विचार करें। – KarlP

1

पहले फ्रेम पर firstFrame.setVisible(false) का उपयोग करें। यह बात छिपा कर देगा ..

अगर आप एक अधिक सामान्य दृष्टिकोण चाहते हैं आप कहीं वर्तमान दिखाया गया फ्रेम के लिए एक संदर्भ है और यह बदल सकता है दिखाया जा सकता है जब एक नया फ्रेम अनुरोध

JFrame currentFrame; 

void showRequest(JFrame frame) 
{ 
    currentFrame.setVisible(false); 
    currentFrame = frame; 
    currentFrame.setVisible(true); 
} 
+0

मैं चाहता हूं कि मुख्य फ्रेम अभी भी यह सुनिश्चित करना चाहता है कि उपयोगकर्ता केवल एक फ्रेम बनाये। मैं बटन पर अक्षम करने के बारे में सोच रहा था, लेकिन क्या लागू करने के लिए कोई और अच्छा अभ्यास है? – user236501

+1

आप __। SetFocusable (false) __ के साथ प्रयास कर सकते हैं, यह फ्रेम रखेगा लेकिन उपयोगकर्ता को इसके अंदर कुछ भी क्लिक करने की अनुमति नहीं दी जाएगी .. – Jack

+0

आपके सुझाव के लिए धन्यवाद। मैं createButton.addActionListener (नई java.awt.event.ActionListener() { \t सार्वजनिक शून्य actionPerformed (java.awt.event.ActionEvent ई) {\t \t \t \t \t ... \t है जैसे कि यह करने की कोशिश की createFrame.setVisible (true); \t mainframe.setFocusable (false); } }); लेकिन मैं अभी भी मुख्य फ्रेम पर निर्माण बटन पर क्लिक कर सकता हूं? – user236501

17

मुझे लगता है कि आप मुख्य JFrame के लिए इस कोड का उपयोग करना चाहिए जब आप नए खोलने की कोशिश कर एक:

this.setEnabled(false);

+2

इतना आसान और वास्तव में ओपी प्रश्न का उत्तर देते हैं, आपने मेरी मदद की है। –

+0

बिल्कुल सही, "मुख्य फ्रेम को अक्षम करने के तरीके" के स्वीकार्य उत्तर होना चाहिए था। धन्यवाद! – corporateWhore

2

देर उत्तर के लिए क्षमा करें, लेकिन आप सिंगलटन डिजाइन पैटर्न पर विचार किया है? जब भी आप कक्षा चाहते हैं, यह कक्षा के उसी उदाहरण को वापस कर देगा। तो उपयोगकर्ता विवरण दर्ज करने के एक फ्रेम चाहता है, वहाँ केवल एक ही फ्रेम खुला (समान उदाहरण) हो जाएगा

वह कुछ इस तरह चला जाता है:

private static MySingleFrame instance = null; //global var 

private MySingleFrame() { } //private constructor 
private static MySingleFrame getInstance() 
{ 

if(instance == null) 
{ 
instance = new MySingleFrame(); 
} 

//returns the same instance everytime MySingleFrame.getInstance() is called 
return instance; 


} 
1

आप उपयोग कर सकते हैं:

private void btn_NewFormActionPerformed(java.awt.event.ActionEvent evt) { 

      this.hide(); 
      new Frm_NewFormUI().setVisible(true); 

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