मेरे पास एक चेकबॉक्स है कि, जब उपयोगकर्ता इसे चुनता है, तो आगे की जानकारी के साथ एक संवाद उत्पन्न करना चाहिए, और उपयोगकर्ता से प्रतिक्रिया पर, कुछ करें। मेरा कोड मूल रूप से इस तरह दिखता है:जब मैं राज्य परिवर्तन पर एक संवाद दिखाता हूं, तो कैसे ठीक किया जाए, JCheckbox दो बार राज्य बदलता है?
private void onItemStateChanged(java.awt.event.ItemEvent evt) {
System.out.println("STATE CHANGED!");//TODO debug code
if (evt.getStateChange() == ItemEvent.SELECTED) {
int returnVal = JOptionPane.showConfirmDialog(this, "blablatext");
if (returnVal == JOptionPane.OK_OPTION) {
this.field1TF.setText("");
this.field1TF.setEditable(false);
this.field2TF.setText("");
this.filed2TF.setEditable(false);
}else if(returnVal == JOptionPane.NO_OPTION){
this.field1TF.setText("");
this.field1TF.setEditable(false);
this.field2TF.setText("");
this.field2TF.setEditable(false);
}
} else if(evt.getStateChange() == ItemEvent.DESELECTED){
this.field1TF.setEditable(true);
this.field2TF.setEditable(true);
}
}
मेरी समस्या अब है, कि जब मैं उस पर क्लिक करता हूं तो मेरा चेकबॉक्स हमेशा दो बार राज्य बदलता है। इसे किसी भी तरह से जॉप्शनपेन.शो कॉनफर्मडिअलॉग के साथ करना है क्योंकि अगर मैं इसे टिप्पणी करता हूं, तो यह इरादे से काम करता है। क्या मुझे कुछ सरलता से अवगत नहीं है, मुझे यहां परवाह करना चाहिए, या मेरी वांछित प्रतिक्रिया प्राप्त करने के लिए मुझे क्या करना है? (उपयोगकर्ता क्लिक करता है चेकबॉक्स -> एक प्रश्न पूछा है -> चुनता हाँ/नहीं/रद्द करें -> कार्यक्रम के हिसाब से काम करता है)
हालांकि यह (चेक बॉक्स की स्थिति के लिए एक वैश्विक चर के साथ) इस तरह काम करता है मैं ItemStateChanged पर काम करने के लिए कोई हैंडलर सोचा था कि मैं वास्तव में क्या जरूरत थी। क्या आप जानते हैं कि यह इसके साथ क्यों काम नहीं करता है? यदि आप मूल समस्या के समाधान के साथ कोई और नहीं आते हैं, तो मैं आपको 'उत्तर स्वीकार कर दूंगा', क्योंकि यह मेरे लिए एक वैध कामकाज है। –
ठीक है http://download.oracle.com/javase/tutorial/uiswing/events/itemlistener.html जिसमें सिमिलियर आउट के साथ एक्स्प्ले शामिल है और मैं एक्शनलिस्टर – mKorbel
के बारे में उदाहरण भेजूंगा मुझे श्रोता लिखने में कोई समस्या नहीं है , मुझे समस्या है कि चेकबॉक्स की स्थिति लगातार दो बार बदलती है, जो कि किसी भी तरह जॉयस्पेन.शोडायलॉग में अपना स्रोत होना चाहिए .. मैं करता हूं। मैं आपकी मदद की सराहना करता हूं, और अभी के लिए मैंने एक्शन लिस्टनर का उपयोग किया था, लेकिन इस पोस्ट का विचार कुछ संकेत प्राप्त करना था कि क्यों संवाद मैं उत्पन्न करता हूं चेकबॉक्स को फिर से अनचेक करने का कारण बनता है –