का उपयोग कर एक रेडियो बटन समूह को बांधने का सही तरीका मैं सोच रहा था कि कोई मुझे बता सकता है कि मैं जेएफएएस डेटा बाध्यकारी का उपयोग कर मॉडल में बूलियन चर के लिए रेडियो बटन के समूह को सही ढंग से कैसे बांध सकता हूं।जेएफएएस डेटा बाध्यकारी
मुझे पहले स्थिति की व्याख्या करने दें: मैंने एक वर्ग बनाया है जो एसडब्ल्यूटी बटनों के समूह का प्रतिनिधित्व करता है (शैली को 'SWT.RADIO' पर सेट किया गया है) जिसमें तीन तत्व होते हैं: प्रश्न वाला एक लेबल और दो बटन , एक "हां" उत्तर के लिए और एक "नहीं" के लिए एक। मैं इस मॉडल में एक बुलियन चर के लिए बाध्यकारी बनाना चाहता हूं कि जब कोई उपयोगकर्ता "हाँ" रेडियो बटन का चयन करता है तो बूलियन सत्य पर सेट होता है, और जब वह "नहीं" बटन चुनता है तो बूलियन है झूठ पर सेट करें। ,
private class YesOrNoRadioButtonGroup {
private static final String YES = "yes";
private static final String NO = "no";
private Button m_yesButton;
private Button m_noButton;
public YesOrNoRadioButtonGroup(final Composite p_parent,
final String p_questionText,
final IObservableValue p_modelProperty
final DataBindingContext p_dbContext)
{
Composite radioButtonGroupContainer = new Composite(p_parent, SWT.NONE);
radioButtonGroupContainer.setLayout(new GridLayout());
Label question = new Label(radioButtonGroupContainer, SWT.NONE);
question.setText(p_questionText);
m_yesButton = new Button(radioButtonGroupContainer, SWT.RADIO);
m_yesButton.setText(YES);
m_noButton = new Button(radioButtonGroupContainer, SWT.RADIO);
m_noButton.setText(NO);
m_noButton.setSelection(true);
Listener yesOrNoRadioGroupListener = new Listener() {
public void handleEvent(Event p_event) {
Button button = (Button) p_event.widget;
if (m_yesButton.equals(button)) {
m_yesButton.setSelection(true);
m_noButton.setSelection(false);
}
else {
m_yesButton.setSelection(false);
m_noButton.setSelection(true);
}
}
};
m_yesButton.addListener(SWT.Selection, yesOrNoRadioGroupListener);
m_noButton.addListener(SWT.Selection, yesOrNoRadioGroupListener);
p_dbContext.bindValue(SWTObservables.observeSelection(this.getYesButton()),
p_modelProperty, null, null);
}
public Button getYesButton() {
return m_yesButton;
}
public Button getNoButton() {
return m_noButton;
}
}
अब के रूप में आप देख सकते हैं, मैं बूलियन करने के लिए मेरे "हाँ" बटन बाध्यकारी हूँ:
यहाँ मेरी कक्षा का कोड है। विशेष रूप से, मान SWT.selection ईवेंट पर बाध्य होगा। ऐसा लगता है, रेडियो बटन के बाध्यकारी के लिए एकमात्र वैध घटना है। हालांकि, इसके कारण, "नहीं" बटन चुना जाने के बाद, बूलियन का मान अपरिवर्तित रहता है (क्योंकि "हां" बटन पर कोई SWT.selection ईवेंट निकाल दिया गया था)।
इस काम को जिस तरीके से माना जाता है, उसे बनाने के लिए मैं क्या कर सकता हूं, यानी उपयोगकर्ता द्वारा चुने गए बटनों के आधार पर मॉडल में बूलियन के मूल्य को बदलने में सक्षम होना चाहिए? क्या मुझे यहां कुछ स्पष्ट याद आ रही है? धन्यवाद!
हम्म ... हाँ, यह इस समस्या को हल करने का सबसे शानदार तरीका प्रतीत होता है। जवाब के लिए टीएनएक्स, अगर कोई भी बेहतर कुछ भी नहीं आता है तो मैं इसे स्वीकार करूंगा। बीटीडब्ल्यू, ऐसा लगता है कि मुझे शायद IObservable को लागू करने के बजाय सार तत्वों का विस्तार करना चाहिए। – Sandman
मुझे लगता है कि SeB.Fr ने SelectObservableValue का उपयोग करके और भी सुरुचिपूर्ण और सरल समाधान प्रदान किया है। – janhink
@ इक्कुई मैं सहमत हूं, और उस पोस्ट को ऊपर उठाया है। – VonC