से चयनित रेडियो बटन कैसे प्राप्त करें I JavaFX 8 और SceneBuilder
पर काम कर रहा हूं। मैंने FXML फ़ाइल में कुछ रेडियो बटन बनाए और उसमें एक रेडियो बटन सूची में toggleGroup
नाम निर्दिष्ट किया। तो, अब मैं अपने नियंत्रक में toggleGroup
का चयनित रेडियो बटन प्राप्त करना चाहता हूं, क्या मुझे नियंत्रक में फ़ील्ड्स के रूप में सभी रेडियो बटन फिर से बनाने की ज़रूरत है, या केवल toggleGroup
ऑब्जेक्ट मुझे चयनित रेडियो बटन (टेक्स्ट का टेक्स्ट) वह रेडियो बटन केवल बटन ऑब्जेक्ट नहीं)।ToggleGroup
उत्तर
मान लें कि आपके पास उस समूह से संबंधित एक टॉगल समूह और तीन रेडियो बटन हैं।
ToggleGroup group = new ToggleGroup();
RadioButton rb1 = new RadioButton("RadioButton1");
rb1.setUserData("RadioButton1");
rb1.setToggleGroup(group);
rb1.setSelected(true);
RadioButton rb2 = new RadioButton("RadioButton2");
rb2.setUserData("RadioButton2");
rb2.setToggleGroup(group);
RadioButton rb3 = new RadioButton("RadioButton3");
rb3.setUserData("RadioButton3");
rb3.setToggleGroup(group);
जब आप कि टॉगल समूह से एक रेडियो बटन का चयन, निम्नलिखित changed(...)
विधि बुलाया जाएगा।
group.selectedToggleProperty().addListener(new ChangeListener<Toggle>(){
public void changed(ObservableValue<? extends Toggle> ov, Toggle old_toggle, Toggle new_toggle) {
if (group.getSelectedToggle() != null) {
System.out.println(group.getSelectedToggle().getUserData().toString());
// Do something here with the userData of newly selected radioButton
}
}
});
यह कभी भी ठीक से या पूरी तरह से उत्तर नहीं दिया गया था, इसलिए मैंने सोचा कि मैं जो समाधान मिला हूं उसे पोस्ट करूंगा।
जब आप SceneBuilder
में रेडियो बटन बनाते हैं, तो ALSO समूह को असाइन करने के लिए SceneBuilder
का उपयोग करें। नियंत्रक के माध्यम से उस समूह तक पहुंचने का तरीका सबसे पहले नियंत्रक में ToggleGroup
प्रकार का एक चर बनाना है और इसे उसी नाम का नाम दें जिसे आपने SceneBuilder
में बनाया था। फिर आप इसका इस्तेमाल कर सकते हैं।
// your imports
public class Controller
{
@FXML ToggleGroup myGroup; //I called it myGroup in SceneBuilder as well.
public void myGroupAction(ActionEvent action)
{
System.out.println("Toggled: " + myGroup.getSelectedToggle().getUserData().toString());
}
public void initialize()
{
//whatever initialize code you have here
}
}
पाठ getUserData
संपत्ति से लौटे हालांकि है लंबा: यहाँ मैं इसे कैसे किया की एक स्यूडोकोड उदाहरण है।
myGroup.selectedToggleProperty().addListener(new ChangeListener<Toggle>()
{
@Override
public void changed(ObservableValue<? extends Toggle> ov, Toggle t, Toggle t1)
{
RadioButton chk = (RadioButton)t1.getToggleGroup().getSelectedToggle(); // Cast object to radio button
System.out.println("Selected Radio Button - "+chk.getText());
}
});
आशा इस किसी सड़क पर मदद करता है
@FXML
ToggleGroup right; //I called it right in SceneBuilder.
बाद में विधि में कहीं ...: यहाँ एक तरह से सिर्फ रेडियो बटन का नाम पाने के लिए है।
RadioButton selectedRadioButton = (RadioButton) right.getSelectedToggle();
String toogleGroupValue = selectedRadioButton.getText();
त्वरित और सरल! – marw
मैं पूछ रहा था कि मैं reqd हूं या नहीं। नियंत्रक में फिर से 3 रेडियोबूटन बनाने के लिए (उन्हें FXML में बनाने के बाद), या मैं केवल ToggleGroup ऑब्जेक्ट केवल बना सकता हूं और किसी भी तरह से चयनित बटन तक पहुंच सकता हूं। –
@Rounaq_intel, केवल नियंत्रक को togglegroup जोड़ने और उपरोक्त उत्तर में श्रोता जोड़ने की कोशिश करें। –
धन्यवाद, बस मैं जो देख रहा था। – Kefirchiks