tutorial started getting example java javafx javafx-8

java - started - Error al resolver "onAction" al cargar FXML



javafx scene builder (1)

Ha importado ActionEvent incorrecto en la clase de controlador.

import java.awt.event.ActionEvent;

Corrigelo a

import javafx.event.ActionEvent;

Tengo algunos problemas para ejecutar una aplicación simple hello world. Está lanzando el siguiente error:

Exception in Application start method Exception in thread "main" java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$152(LauncherImpl.java:182) at com.sun.javafx.application.LauncherImpl$$Lambda$2/1329552164.run(Unknown Source) at java.lang.Thread.run(Thread.java:745) Caused by: javafx.fxml.LoadException: Error resolving onAction=''#printHello'', either the event handler is not in the Namespace or there is an error in the script. /home/willi/java/IdeaProjects/JavaFXApp/out/production/JavaFXApp/sample/sample.fxml:23 at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601) at javafx.fxml.FXMLLoader.access$100(FXMLLoader.java:104) at javafx.fxml.FXMLLoader$Element.processEventHandlerAttributes(FXMLLoader.java:606) at javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:766) at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2827) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2536) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2445) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3218) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3179) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3152) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3128) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3108) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3101) at sample.Main.start(Main.java:13) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$159(LauncherImpl.java:863) at com.sun.javafx.application.LauncherImpl$$Lambda$57/2085742749.run(Unknown Source) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$172(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl$$Lambda$52/738441956.run(Unknown Source) at com.sun.javafx.application.PlatformImpl.lambda$null$170(PlatformImpl.java:295) at com.sun.javafx.application.PlatformImpl$$Lambda$55/689939224.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$171(PlatformImpl.java:294) at com.sun.javafx.application.PlatformImpl$$Lambda$53/1382865734.run(Unknown Source) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) at com.sun.glass.ui.gtk.GtkApplication.lambda$null$48(GtkApplication.java:139) at com.sun.glass.ui.gtk.GtkApplication$$Lambda$43/704249306.run(Unknown Source) ... 1 more

Mi archivo Controller.java tiene los métodos printHello e printWorld definidos en ellos, y me gustaría llamarlos cuando printWorld sus botones correspondientes. El código es el siguiente: muestra de paquete;

import javafx.fxml.FXML; import javafx.scene.control.Button; import java.awt.event.ActionEvent; public class Controller { @FXML private Button helloButton; @FXML private Button worldButton; @FXML private void printHello(ActionEvent e){ System.out.println("Hello"); } @FXML private void printWorld(ActionEvent f){ System.out.println("World"); } }

`En mi archivo fxml, tengo dos botones definidos. Su código es el siguiente:

<Button fx:id="helloButton" layoutX="46.0" layoutY="87.0" mnemonicParsing="false" onAction="#printHello" text="Hello" /> <Button fx:id="worldButton" layoutX="97.0" layoutY="87.0" mnemonicParsing="false" onAction="#printWorld" text="World" />

¿Por qué mi código está lanzando este error?

Lo siento de antemano por el terrible formato, esta es la primera vez que publico.