fxml combobox der ausgewählte Wert in javafx
wie kann ich fangen die ausgewählten Wert eines fxml combobox und implementieren es in einer javafx-Klasse?
gab ich die combobox die fx:id "Probe" und erstellt eine Schaltfläche mit onAction="#test" und ausprobiert .getValue und .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);
}
Wenn ich ihn starten will bekomme ich eine Fehlermeldung:
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
Vielen Dank im Voraus
Zombie
InformationsquelleAutor user2361460 | 2013-05-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass der code, den Sie in Ihrer Frage sollte funktionieren, solange der Fall des combobox-Bezeichner im code entspricht deiner fxml
fx:id
.Modifizierte ich diese JavaFX-fxml-combo-box-Auswahl Demo-app so fügen Sie eine Schaltfläche mit einer onAction-Methode zum abrufen eines Wertes aus der combo-box mit der comboBox
getValue()
Methode und es funktionierte gut für mich.Überprüfen Sie den Fall der Dinge, die ich beachten Sie, dass Sie sagen, dass die
fx:id
istsample
, doch in Ihrem code, den Sie verwendenSample
- und die Fälle müssen übereinstimmen, da sonst die fxml-loader nicht injizieren Sie den Knoten in Ihrem controller korrekt.Schwer zu sagen, ob die
NullPointerException
im code ist im Zusammenhang mit Ihrem combo-box-Wert-retrieval-Problem, wie Sie nicht sagen, was der code anTW_JAVAFX_Undecorator.ButtonController.pruefen(ButtonController.java:60)
ist oder bieten volle ausführbaren code zu replizieren, das Problem.InformationsquelleAutor jewelsea
Versuchen Sie dies:
Probe.getSelectionModel().getSelectedIndex()
Casting überflüssig ist. toString() ist immer der String-Typ.
InformationsquelleAutor RayFoX
Um die ComboBox ausgewählten Wert können Sie verwenden
Sample.getSelectionModel
Methode.Beispiel:
InformationsquelleAutor Maulik Patel
Ich war auf der Suche nach einer Antwort für diese Fehlermeldung (die nur passiert mir bei gleichen Bedingungen) und fand diesen Beitrag.
Wenn Sie tatsächlich erklärt Ihr ComboBox id korrekt als jewelsea sagte (Wenn nicht sowieso denke ich, dass andere Fehler aufgetaucht wäre).
Tatsache ist, alles wurde gut erklärt (keine syntax-Fehler oder kompilieren Fehler).
Der Fehler in der runtime die Veranstaltung
@FXML protected void test(ActionEvent event)
worden ist, ausgeführt werden, wenn Sie füllen/hinzufügen von Daten zu Ihrem ComboBox.Aber value-Eigenschaft nicht zu ändern, da keine Benutzereingabe erkannt wurde (ich nehme an, Sie sind hinzufügen von Daten in die ComboBox irgendwo beim initialisieren der Szene).
So
getValue()
ist die Rückgabe null.In diesem Fall die Zeile, die den code gebrochen ist:
Da die Ausgabe ist
null
.Versuchen, setzen einen breakpoint am Anfang der
test(ActionEvent event)
Methode.Ich erwarte, dass diese Hilfe auch die anderen.
InformationsquelleAutor hmojica