मैं एक जावा/स्विंग जीयूआई परियोजना में निम्नलिखित कोड देखें:यह स्विंग कोड कैसे काम कर रहा है?
MyDialog dlg = new MyDialog(parent, isFizz);
MyDialogResults results = dlg.getResults();
eventBus.fireEvent(new MyDialogEvent(results));
उपरोक्त कोड में, MyDialog extends JDialog
। तो स्पष्ट रूप से, एक बाल संवाद का निर्माण किया जा रहा है (और किसी भी तरह से अंतिम उपयोगकर्ता को दिखाया गया है), और फिर जब उपयोगकर्ता संवाद से बाहर निकलता है (ठीक या कुछ अन्य बटन क्लिक करके), results
बीन का उपयोग घटना पर एक नई घटना को आग लगाने के लिए किया जाता है बस।
लेकिन मैं दो बातों के साथ संघर्ष कर रहा हूँ:
- वास्तव में कैसे/है, जहां जावा कहा जा रहा है आकर्षित करने के लिए/उपयोगकर्ता के लिए संवाद दिखाने ?; और
- बस को ईवेंट को फायर करने से पहले जावा को कैसे/कहाँ संवाद से बाहर निकलने के लिए कहा जा रहा है?
यह है कि एक JDialog
बच्चा हमेशा संवाद दिखाई देगा जब JDialog
बनाई गई है, और निर्माता से वापस नहीं जब तक संवाद से बाहर निकल गया है? यहाँ से MyDialog
निर्माता hte का सारांश है:
public class MyDialog extends JDialog {
private boolean isFizz;
private MyDialogResults results;
// Getters and setters for all properties...
public MyDialog(Frame parent, boolean isFizz) {
super(parent, "My Dialog", true);
setIsFizz(isFizz);
setVisible(true);
dispose();
}
}
समझ के साथ किसी भी मदद/अंतर्दृष्टि के लिए अग्रिम धन्यवाद कैसे संवाद खुले, "रुक जाता है" (हालांकि मैं जानता हूँ कि इसकी वास्तव में नहीं लटका दिया/जमे हुए), बंद कर देता है, और फिर घटना को आग लगती है।
धन्यवाद @ एंड्रयू थॉम्पसन (+1) - हालांकि # 2 के लिए मैं अभी भी उलझन में हूं। [कन्स्ट्रक्टर जावाडोक] के अनुसार (http://docs.oracle.com/javase/7/docs/api/javax/swing/JDialog.html#JDialog%28java.awt.Dialog,%20java.lang.String,% 20boolean% 29) केवल 'मोडल' को सही करने के लिए सेट करें "दिखाए जाने पर अन्य शीर्ष-स्तरीय विंडो में उपयोगकर्ता इनपुट ब्लॉक करता है"। लेकिन यह वही नहीं है जैसा मैं यहां वर्णन कर रहा हूं। मुझे विश्वास नहीं है कि कोड की अगली पंक्ति ('MyDialogResults परिणाम = dlg.getResults();') को निष्पादित करने तक निष्पादित करने से रोक देगा, क्योंकि यह "उपयोगकर्ता इनपुट" नहीं है। –
सुपर कॉल में "सत्य" संवाद मोडल बनाता है। इसका मतलब है कि 'सेट विज़िबल (सत्य)' पर कॉल तब तक वापस नहीं आएगा जब तक कि संवाद बंद नहीं हो जाता। –
* "" दिखाए जाने पर अन्य शीर्ष-स्तरीय विंडो में उपयोगकर्ता इनपुट अवरुद्ध करता है "* ..और निष्पादन से अगली कोड लाइन को रोकता है (इसमें क्या जोड़ा जाना चाहिए)। –