combobox fxml, récupère la valeur sélectionnée dans javafx
comment puis-je attraper la valeur sélectionnée d'une fxml combobox et de mettre en œuvre dans une classe javafx?
j'ai donné la liste déroulante le fx: "id échantillon" et créé un bouton avec onAction="#test" et j'ai essayé .getValue et .getPromptText.
@FXML private ComboBox<String> Sample;
@FXML protected void test( ActionEvent event ) {
String output = (String) Sample.getValue();
System.out.println(output);
String output = (String) Sample.getPromptText();
System.out.println(output);
}
Si j'essaie de le lancer, j'obtiens une erreur:
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1440)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:28)
at javafx.event.Event.fireEvent(Event.java:171)
at javafx.scene.Node.fireEvent(Node.java:6863)
at javafx.scene.control.Button.fire(Button.java:179)
at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:193)
at com.sun.javafx.scene.control.skin.SkinBase$4.handle(SkinBase.java:336)
at com.sun.javafx.scene.control.skin.SkinBase$4.handle(SkinBase.java:329)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:64)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33)
at javafx.event.Event.fireEvent(Event.java:171)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3324)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3164)
at javafx.scene.Scene$MouseHandler.access$1900(Scene.java:3119)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1559)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2261)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:228)
at com.sun.glass.ui.View.handleMouseEvent(View.java:528)
at com.sun.glass.ui.View.notifyMouse(View.java:922)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1435)
... 45 more
Caused by: java.lang.NullPointerException
at TW_JAVAFX_Undecorator.ButtonController.pruefen(ButtonController.java:60)
... 50 more
Merci d'avance
Zombie
source d'informationauteur user2361460
Vous devez vous connecter pour publier un commentaire.
Je pense que le code que vous avez dans votre question doit travailler aussi longtemps que le cas de la zone de liste déroulante identifiant dans le code correspond à celui de votre fxml
fx:id
.J'ai modifié cette JavaFX fxml combo de sélection de la zone de démonstration de l'app pour ajouter un bouton avec un onAction méthode pour récupérer une valeur dans la liste déroulante à l'aide de la zone de liste déroulante
getValue()
méthode et il a bien fonctionné pour moi.Cochez la case de choses, je remarque que vous dites la
fx:id
estsample
mais dans votre code que vous utilisezSample
- et le cas doit correspondre sinon le fxml chargeur de ne pas injecter le nœud dans votre contrôleur correctement.Difficile de dire si le
NullPointerException
dans votre code est lié à votre zone de liste modifiable valeur de récupération de la question que vous ne dites pas ce que le code àTW_JAVAFX_Undecorator.ButtonController.pruefen(ButtonController.java:60)
est ou de fournir complète le code de l'exécutable de reproduire le problème.Essayez ceci:
Pour obtenir la zone de liste déroulante valeur sélectionnée, vous pouvez utiliser
Sample.getSelectionModel
méthode.Exemple:
J'essayais de trouver une réponse à cette erreur (qui vient de se passer pour moi dans les mêmes conditions) et trouvé ce post.
Si vous avez déjà déclaré votre zone de liste déroulante identifiant correctement comme jewelsea dit (Si pas de toute façon je pense que d'autres l'erreur serait apparu).
Le fait est que tout était bien déclaré (pas d'erreur de syntaxe ou d'erreur de compilation).
L'erreur est dans l'exécution, le cas
@FXML protected void test(ActionEvent event)
est en cours d'exécution lorsque vous remplissez/ajouter des données à votre zone de liste déroulante.Mais valeur de la propriété est de ne pas changer depuis aucune entrée utilisateur n'a été détecté (je suis en supposant que vous êtes en train d'ajouter des données à votre zone de liste déroulante ailleurs lors de l'initialisation de la Scène).
Donc
getValue()
retourne null.Dans ce cas, la ligne qui cassé le code est:
Parce que la production est
null
.Essayer de mettre un point d'arrêt au début de
test(ActionEvent event)
méthode.J'espère que cela aide aussi les autres.