2017-09-21 8 views
-1

Cette question est similaire à d'autres questions sur ChoiceBox dans JavaFX, mais j'ai quelque chose d'autre fait dans mon code. Je classe avec des éléments suivants:Comment obtenir la valeur sélectionnée dans le type observableArrayList de ChoiceBox dans JavaFX

package application; 

public class ControllerRegister extends Main implements Initializable { 

@FXML 
private ChoiceBox<String> cbSuppliers; 
private ArrayList<String> suppliers = new ArrayList<String>(); 

public ControllerRegister() throws SQLException {/*....*/} 

@FXML //controller method 
void buttonOnAction2(ActionEvent event2) throws IOException, SQLException { 
    //push some button and then get value of choicebox 
    setStrTabDat() 
    /*....*/ 
} 

public static void setStrTabDat(){ //my attempts to show selected value from ChoiceBox 
    ObservableList<String> outputOl = FXCollections.observableArrayList(); 
    ChoiceBox<String> cbSuppliers = new ChoiceBox<String>(); 
    outputOl = cbSuppliers.getItems(); 
    outputOl.addAll(cbSuppliers.getValue()); 
    String output = cbSuppliers.getValue(); 
    System.out.println("output string: "+output); 
    System.out.println("output by method: " +cbSuppliers.getItems()); 
    System.out.println("output observList: "+outputOl.toString()); 
} 

@Override 
public void initialize(URL arg0, ResourceBundle arg1) { 
    ObservableList<String> list = FXCollections.observableArrayList(suppliers); 
    cbSuppliers.setItems(list); 
    cbSuppliers.getSelectionModel().selectFirst(); 
} 
} 

Comme on peut voir dans la méthode que vous setStrTabDat() il y a mes tentatives pour imprimer la valeur sélectionnée à partir ChoiceBox, mais la production de trois Sytem.out.prints est « nul ». Je sais que la solution est proche de moi, alors s'il vous plaît me conseiller ce que je devrais faire ..

Répondre

0

Peut être que vous pouvez essayer THIS LINK. Ici, ils expliquent:

  • Comment créer ChoiceBox();
  • Comment utiliser un
  • Comment ajouter des écouteurs
  • Comment récupérer des données

Essentiellement, ils expliquent tout ce que vous devez savoir à ce sujet.

Bonne chance :)

Meilleures salutations, Dimitar Georgiev

+1

Merci, Votre proposition m'a conduit à une solution;) – keru

0

solution correcte est d'ajouter à l'auditeur ChoiceBox dans la méthode initialize() comme ceci:

@Override 
public void initialize(URL arg0, ResourceBundle arg1) { 
    ObservableList<String> list = FXCollections.observableArrayList(suppliers); 
    cbSuppliers.setItems(list); 
    cbSuppliers.getSelectionModel().selectFirst(); 
    //and listener: 
    cbSuppliers.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() { 
    @Override 
    public void changed(ObservableValue<? extends Number> observableValue, Number number, Number number2) { 
    System.out.println(cbSuppliers.getItems().get((Integer) number2)); 
    } 
    }); 
}