मेरे पास एक टेक्स्ट फ़ील्ड है जिसे मैं एक आवश्यक फ़ील्ड के रूप में टॉगल करना चाहता हूं या चेकबॉक्स चेक किए जाने पर आधारित नहीं है। मुझे अच्छा खेलने के लिए ValueChangeEventListener नहीं मिल रहा है।

अभी तक मेरे पास इतना ही है:

private TextField myTextField = new TextField("Name");
myTextField.setRequired(true);

private CheckBox  myCheckBox;
myCheckBox = createCheckBox();


private CheckBox createCheckbox() {
    CheckBox checkBox = new CheckBox("My checkbox");
    checkBox.setImmediate(true);
    checkBox.addValueChangeListener(new ValueChangeListener() {
        @Override
        public void valueChange(ValueChangeEvent event) {
            toggleRequired();
        }
    });
    return checkBox;
}


private void toggleRequired() {
    if (myCheckBox.getValue() != true) {
        myTextField.setRequired(false);
    } else {
        myTextField.setRequired(true)
    }
}

ValueChangeListener को कई बार सही से गलत पर वापस सच में जाने के लिए निकाल दिया जाता है। सुनिश्चित नहीं है कि मैं यहां क्या गलत कर रहा हूं और वास्तव में कुछ मदद की सराहना करता हूं।

शुक्रिया

0
Tkingovr 17 अक्टूबर 2016, 23:18
क्या आपकी else शाखा को myCheckBox.setRequired(true) के बजाय myTextField.setRequired(true); नहीं पढ़ना चाहिए? शायद, आप इसे सरल बनाने के लिए केवल myTextField.setRequired(myCheckBox.getValue()); लिख सकते हैं।
 – 
Morfic
17 अक्टूबर 2016, 23:50
इसे इंगित करने के लिए धन्यवाद, यह एक टाइपो है, मैं प्रश्न संपादित करूंगा!
 – 
Tkingovr
17 अक्टूबर 2016, 23:53

1 उत्तर

सबसे बढ़िया उत्तर

ठीक है, मैंने पता लगा लिया! यह एक बहुत ही आसान उपाय था, मुझे बस इतना ही बदलना था

 checkBox.addValueChangeListener(new CheckBox.ValueChangeListener() {});

मैं इसके बजाय कुछ निम्नलिखित गुण वर्ग का संदर्भ दे रहा था:

properties.ValueChangeListener();
0
Tkingovr 4 नवम्बर 2016, 21:26