2012-08-11 15 views
5

मैंने जावाक्क्स दृश्य बिल्डर के साथ एक Fxml के अंदर एक चॉइसबॉक्स लगाया।कौन सा चॉइसबॉक्स-इवेंट चुनने के लिए?

एफएक्सएमएल में एक नियंत्रक है जो इसे सौंपा गया है।

मेरा प्रश्न है: यदि मैं बदले गए मूल्यों के बारे में जानना चाहता हूं तो मुझे किस कार्यक्रम को पंजीकरण करने की आवश्यकता है?

onInputMethodTextChanged="#languageSelectionModified" 

इस निम्नलिखित कोड

public void languageSelectionModified(Event event) { 
    ChoiceBox<String> box = (ChoiceBox<String>) event.getSource(); 
    System.out.println(box.getValue()); 
} 

और आरंभिक क्लिक के लिए यह केवल काम करता है के साथ काम नहीं करता है (यानी जब एक आइटम का चयन सूची खोलने, नहीं):

onMouseClicked="#languageSelectionModified" 

यद्यपि माउस-इवेंट्स ऐसी परिस्थितियों के कारण कभी भी अच्छा विकल्प नहीं होगा जहां स्पर्श या कीबोर्ड इनपुट-विधि है, फिर भी यह साबित करता है कि System.out तक पहुंचा जा सकता है।

choicebox.getSelectionModel().selectedItemProperty().addListener(choiceboxSelectionChangeListener); 

आप:

मैं absolutly कोई पता नहीं है, जहां उन चीजों documentated कर रहे हैं (डिफ़ॉल्ट जावा एपीआई में ऐसा नहीं होता)

उत्तर

4

अपने @FXML करने के लिए एक श्रोता अपने नियंत्रक में इंजेक्शन choicebox जोड़े है भी चयनित आइटम के लिए बाध्य कर सकते हैं:

label.textProperty().bind(choicebox.getSelectionModel().selectedItemProperty()); 

यहाँ कोई ComboBox FXML में परिभाषित के लिए एक नियंत्रक में एक श्रोता ऊपर hooking के example है। एक चॉइसबॉक्स के लिए तर्क काफी समान है।

+0

आपके उत्तर के लिए धन्यवाद! यह अच्छी तरह से काम करता है। तो 'सामान्य' FXML-events के माध्यम से इसे करने का कोई तरीका नहीं है? यदि आप मुझे बता सकते हैं कि मैं FXML-फ़ाइलों के लिए मौजूदा (और परिभाषित) ईवेंट को देखने में सक्षम हूं, तो मैं आपके प्रश्न का उत्तर देने के रूप में आपका उत्तर चिह्नित करता हूं। – Gundon

+0

नहीं, आप JavaFX 2.0 से 2.2 का उपयोग कर FXML में इसके लिए ईवेंट नहीं देख सकते हैं। – jewelsea

+0

चयन मॉडल ईवेंट तब भी ट्रिगर होता है जब पसंदबॉक्स का मान कोड द्वारा सेट किया जाता है (मेरे मामले में, मेरे पास एक विकल्प है जो बाल पसंद बॉक्स के रूप में पॉप्युलेट करता है) और मेरी इच्छा है कि "उपयोगकर्ता द्वारा संचालित परिवर्तनों" को अलग करने का एक साफ तरीका था कोड संचालित लोगों। – Mikeb