2012-08-11 1 views
5

Coloqué un ChoiceBox dentro de un fxml con JavaFX Scene Builder.¿Qué ChoiceBox-Event elegir?

El FXML tiene un controlador asignado.

Mi pregunta es: ¿Qué evento necesito registrar si deseo saber acerca de los valores modificados?

onInputMethodTextChanged="#languageSelectionModified" 

esto no funciona con el siguiente código

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

y esto sólo funciona para el clic inicial (es decir, la apertura de la lista, no la hora de seleccionar un ítem):

onMouseClicked="#languageSelectionModified" 

Aunque Mouse-Events nunca sería una buena elección debido a situaciones en las que el toque o el teclado es el método de entrada, aún así se puede acceder al System.out.

me tienen absolutamente ninguna idea de dónde se documentated esas cosas (por defecto en el API de Java no lo son)

Respuesta

4

Añadir un oyente a su @FXML inyecta choicebox en su controlador:

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

Usted también se puede unir al elemento seleccionado:

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

Aquí se presenta una example de conectar un oyente en un controlador para un ComboBox se define en FXML. La lógica para un ChoiceBox es prácticamente idéntica.

+0

Gracias por su respuesta! Esto funciona bien Entonces, ¿no hay forma de hacerlo a través de los eventos FXML "normales"? Si pudiera decirme dónde podría haber podido buscar los eventos existentes (y definibles) para los archivos FXML, marque su respuesta como respuesta a mi pregunta. – Gundon

+0

No, no puede buscar eventos para esto en FXML usando JavaFX 2.0 a 2.2. – jewelsea

+0

El evento de modelo de selección se desencadena incluso cuando el valor de la casilla de opciones está establecido por código (en mi caso, tengo una opción que rellena una forma de cuadros de selección para niños) y me gustaría que haya una manera clara de distinguir "cambios dirigidos por el usuario" codificados. – Mikeb

Cuestiones relacionadas