web-dev-qa-db-ja.com

FXMLのロード中に「onAction」を解決する際のエラー

シンプルなhello worldアプリケーションを実行するのに問題があります。次のエラーがスローされています。

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

Controller.JavaファイルにはprintHelloメソッドとprintWorldメソッドが定義されており、対応するボタンを押したときにそれらを呼び出したいと思います。コードは次のとおりです。

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

`fxmlファイルには、2つのボタンが定義されています。コードは次のとおりです。

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

コードでこのエラーがスローされるのはなぜですか?

ひどいフォーマットのために前もってすみません、これは私の最初の投稿です。

20
DesolateTen

間違ったActionEventをコントローラークラスにインポートしました。

import Java.awt.event.ActionEvent;

修正する

import javafx.event.ActionEvent;
61
Uluk Biy