2011-03-26 11 views
6

मैं वर्तमान में एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जो मुझे लगता है कि यह मूल रूप से अधिक जटिल हो रहा है। जो मैं अभी करने का लक्ष्य रख रहा हूं वह कार्यक्रम में मुख्य धागे के निष्पादन को रोक दिए बिना एक संदेश संवाद दिखाता है। अभी, मैं उपयोग कर रहा हूँ:निष्पादन के प्रवाह को रोकने के बिना "JOptionPane.showMessageDialog" दिखा रहा है

JOptionPane.showMessageDialog(null, message, "Received Message", JOptionPane.INFORMATION_MESSAGE); 

लेकिन यह मुख्य थ्रेड में सब कुछ रुक जाता है तो यह एक समय में एकाधिक संवाद नहीं दिखाया जाएगा, बस पर एक के बाद। क्या यह एम = जॉक्शनपेन का उपयोग करने के बजाय एक नया जेएफआरम बनाने के रूप में सरल हो सकता है?

उत्तर

10

docs के अनुसार:

JOptionPane JDialogs कि मोडल हैं पैदा करता है। एक गैर-मोडल संवाद बनाने के लिए, आपको सीधे जेडियलॉग क्लास का उपयोग करना होगा।

उपरोक्त लिंक संवाद बॉक्स बनाने के कुछ उदाहरण दिखाता है।


एक अन्य विकल्प इस तरह अपनी ही धागा कुछ में JOptionPane शुरू करने के लिए है:

Thread t = new Thread(new Runnable(){ 
     public void run(){ 
      JOptionPane.showMessageDialog(null, "Hello"); 
     } 
    }); 
    t.start(); 

उस स्थिति में आपके कार्यक्रम का मुख्य धागा जारी है, भले ही मॉडल संवाद निर्भर है।

+0

ओपी:, साथ ही हालांकि JOptionPane द्वारा बनाई संवाद के साधन से सावधान रहें यदि आप कई संवादों तो क्या आप वास्तव में उन्हें मॉडल बनना चाहता हूँ अप पॉपिंग कर रहे हैं? – iainmcgin

+0

धन्यवाद iainmcgin। मैंने वास्तव में ऐसा नहीं सोचा था। "JOptionPane.showMessageDialog" का उपयोग करने के बजाय मैंने अभी एक नया जेएफआरएम बनाया जो संदेश प्रदर्शित करता है। – Brandon

+0

सावधान रहें। http://stackoverflow.com/questions/9554636/the-use-of-multiple-jframes-good-bad-practice – user2228462

0

आप संवाद प्रदर्शित करने और प्रतिक्रिया को संभालने के लिए बस एक अलग Runnable शुरू कर सकते हैं।

0

कोशिश इस एक:

EventQueue.invokeLater(new Runnable(){ 
         @Override 
         public void run() { 
        JOptionPane op = new JOptionPane("Hi..",JOptionPane.INFORMATION_MESSAGE); 
        JDialog dialog = op.createDialog("Break"); 
        dialog.setAlwaysOnTop(true); 
        dialog.setModal(true); 
        dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);  
        dialog.setVisible(true); 
         } 
        }); 
संबंधित मुद्दे