2015-04-08 17 views
13

Ho riscontrato alcuni problemi con l'esecuzione di un'applicazione semplice Hello World. Si sta gettando il seguente errore:Errore durante la risoluzione di "onAction" durante il caricamento di FXML

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 

file di mio Controller.java ha i metodi printHello e printWorld definiti in loro, e mi piacerebbe chiamarli quando si premono i pulsanti corrispondenti. Il codice è il seguente: campione del pacchetto;

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"); 
    } 
} 

`Nel mio file fxml, ho due pulsanti definiti. Il loro codice è il seguente:

<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" /> 

Perché il mio codice genera questo errore?

Siamo spiacenti in anticipo per la terribile formattazione, questa è la mia prima pubblicazione.

+0

Si prega di inviare il codice vero e proprio si sta cercando di correre. – mjuarez

+0

Questo dovrebbe funzionare. Puoi assicurarti di aver fornito il nome corretto della classe controller in fxml? Oppure, inserisci qui il file fxml completo, insieme ai nomi dei pacchetti per Controller. – ItachiUchiha

risposta

39

Hai importato ActionEvent errato nella classe controller.

import java.awt.event.ActionEvent; 

correggerlo per

import javafx.event.ActionEvent; 
Problemi correlati