मुझे डेटाबेस से कुछ डेटा प्राप्त करने और उस पल के लिए मौजूदा डेटा को संशोधित करने से रोकने की आवश्यकता है।मोडल जेडियलोग (स्विंगवॉर्कर का उपयोग करके) को सुरक्षित रूप से खोलें और बंद करें
मैंने डीबी अपडेट और एक मॉडल जेडीअलॉग बनाने के लिए एक स्विंगवर्कर बनाया जो उपयोगकर्ता को दिखा रहा है कि क्या हो रहा है (एक जेपी प्रोग्रेसबार के साथ)। मोडल डायलॉग में डिफॉल्ट क्लोज़ऑपरेशन डीओ_एनओथिंग पर सेट है, इसलिए इसे केवल उचित कॉल के साथ बंद किया जा सकता है - मैं setVisible(false)
का उपयोग करता हूं।
MySwingWorkerTask myTask = new MySwingWorkerTask();
myTask.execute();
myModalDialog.setVisible(true);
SwingWorker) doInBackground (भीतर कुछ सामान करता है और अंत में यह कहता है:
myModalDialog.setVisible(false);
मेरी केवल चिंता और मेरे सवाल: है कि SwingWorker कार्यान्वित setVisible(false)
पहले यह setVisible(true)
में है संभव है श्रमिक के बाद की रेखा?
यदि setVisible(true)
हमेशा के लिए अवरुद्ध हो सकता है (उपयोगकर्ता मोडल विंडो बंद नहीं कर सकता)।
while (!myModalDialog.isVisible()) {
Thread.sleep(150);
}
myModalDialog.setVisible(false);
यकीन है कि यह वास्तव में बंद हो जाएगा बनाने के लिए:
मैं के रूप में कुछ को लागू करने की है?
आप 'myModalDialog.setVisible (गलत) बुलाना चाहिए;' 'में()' 'बजाय doInBackground का किया()'। आप 'execute' से पहले 'सेट विज़िबल (सत्य)' क्यों नहीं कहते हैं? वास्तव में :-) – assylias
setVisible (सही) एक अवरुद्ध कॉल – user1713059
Haha है। – assylias