2013-01-25 14 views
7

मेरे पास javafx में एक विकल्पबॉक्स है जिसमें 3 आइटम ए बी और सी हैं, इसलिए इस आइटम के चयन के परिवर्तन पर मैं कुछ कार्य करना चाहता हूं तो मैं इस घटना को कैसे संभाल सकता हूं?javafx पसंदबॉक्स घटनाएं

final ChoiceBox cmbx=new ChoiceBox(); 
    try { 
     while(rs.next()) 
     { 
      cmbx.getItems().add(rs.getString(2)); 

      } 
     } 
     catch (SQLException e) 
      { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 

im आइटम जोड़ने डेटाबेस से choicebox करने के लिए ... अब मैं पता है कि कैसे JavaFX में choicebox की घटनाओं को संभालने के लिए

उत्तर

15

ChoiceBox के selectionmodel और selectedIndexProperty करने के लिए एक ChangeListener जोड़े हैं:

final ChoiceBox<String> box = new ChoiceBox<String>(); 

    box.getItems().add("1"); 
    box.getItems().add("2"); 
    box.getItems().add("3"); 

    box.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() { 
     @Override 
     public void changed(ObservableValue<? extends Number> observableValue, Number number, Number number2) { 
     System.out.println(box.getItems().get((Integer) number2)); 
     } 
    }); 
5

सेबेस्टियन ने काफी अच्छी तरह से समझाया है, बस अगर आप केवल पसंद बॉक्स पर चुने गए वास्तविक मूल्य पर रूचि रखते हैं और इंडेक्स के बारे में ज्यादा परवाह नहीं करते हैं, तो आप चयनित में बजाय चयनित इटैमप्रोपर्टी का उपयोग कर सकते हैं dexProperty।

इसके अलावा चेंजलिस्टर कार्यात्मक इंटरफ़ेस है, जब आप जावा 8 के साथ जाते हैं तो आप यहां लैम्ब्डा का उपयोग कर सकते हैं। मैंने थोड़ा सेबस्टियन के उदाहरण को संशोधित किया है। नया वैल्यू नया चयनित मूल्य है।

ChoiceBox<String> box = new ChoiceBox<String>(); 
box.getItems().add("1"); 
box.getItems().add("2"); 
box.getItems().add("3"); 

box.getSelectionModel() 
    .selectedItemProperty() 
    .addListener((ObservableValue<? extends String> observable, String oldValue, String newValue) -> System.out.println(newValue));