运行应用程序时发生javafx异常-原因:java.lang.nosuchmethodexception:view.questioneditor.< init>()

oknrviil  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(133)

我在运行javafxml文件时遇到编译错误,我不知道为什么,请帮帮我!我正在研究intellij的想法,并通过场景生成器工作。我知道问题不在于xml路径,因为我从同一项目中的一个工作视图复制了它,该视图是由我的assoisite视图类创建的:

package View;

import Controller.QuestionLogic;
import javafx.application.Application;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.stage.Stage;

public class QuestionEditor extends Application {
    Stage stage;
    @FXML
    private ChoiceBox<String> allQuestions;
    @FXML
    private ChoiceBox<String> difficultyLevels;
    @FXML
    private ToggleGroup buttonGroup;
    @FXML
    private RadioButton radio1;
    @FXML
    private RadioButton radio2;
    @FXML
    private RadioButton radio3;
    @FXML
    private RadioButton radio4;

    public QuestionEditor(ChoiceBox<String> allQuestions, ChoiceBox<String> difficultyLevels, ToggleGroup buttonGroup) {
        this.allQuestions = allQuestions;
        this.difficultyLevels = difficultyLevels;
        this.buttonGroup = buttonGroup;
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        this.stage = primaryStage;
        Parent root = (Parent) FXMLLoader.load(this.getClass().getResource("QuestionEditor.fxml"));
        primaryStage.setTitle("Hello World");
        Scene scene = new Scene(root, 300.0D, 275.0D);
        initialize();
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    @FXML
    public void initialize() {
    allQuestions.getItems().removeAll(allQuestions.getItems());
    allQuestions.getItems().addAll(QuestionLogic.getInstance().orderQuestionListEditor());
    difficultyLevels.getItems().removeAll(difficultyLevels.getItems());
    difficultyLevels.getItems().addAll("Easy","Medium","Hard");
    }

    public static void main(String[] args) {
        launch(args);
    }

}

fxml文件:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.RadioButton?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.ToggleGroup?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>

<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="453.0" prefWidth="778.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="View.QuestionEditor">
    <top>
        <HBox prefHeight="50.0" prefWidth="600.0" BorderPane.alignment="CENTER">
         <children>
            <Button mnemonicParsing="false" text="backButton" />
            <Label alignment="CENTER" contentDisplay="CENTER" prefHeight="46.0" prefWidth="699.0" text="Question editor">
               <font>
                  <Font name="Calibri" size="39.0" />
               </font>
            </Label>
         </children></HBox>
    </top>
    <center>
        <BorderPane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER">
            <center>
                <Pane prefHeight="344.0" prefWidth="578.0" BorderPane.alignment="CENTER">
                    <children>
                        <Label alignment="CENTER" contentDisplay="CENTER" prefHeight="38.0" prefWidth="109.0" text="Details:" textAlignment="CENTER" />
                        <Label alignment="CENTER" contentDisplay="CENTER" layoutX="97.0" layoutY="34.0" text="Difficulty:" textAlignment="CENTER" />
                        <ChoiceBox fx:id="difficultyLevels" layoutX="161.0" layoutY="30.0" prefHeight="21.0" prefWidth="204.0" />
                        <Label alignment="CENTER" contentDisplay="CENTER" layoutX="90.0" layoutY="81.0" prefHeight="18.0" prefWidth="65.0" text="Question" textAlignment="CENTER" />
                        <TextField layoutX="161.0" layoutY="61.0" prefHeight="58.0" prefWidth="399.0" />
                        <Label layoutX="97.0" layoutY="135.0" text="Answer 1:" />
                        <Label layoutX="97.0" layoutY="169.0" text="Answer 2:" />
                        <Label layoutX="97.0" layoutY="202.0" text="Answer 3:" />
                        <Label layoutX="97.0" layoutY="233.0" text="Answer 4:" />
                        <TextField alignment="CENTER" layoutX="161.0" layoutY="229.0" />
                        <TextField alignment="CENTER" layoutX="161.0" layoutY="198.0" />
                        <TextField alignment="CENTER" layoutX="161.0" layoutY="131.0" />
                        <TextField alignment="CENTER" layoutX="161.0" layoutY="165.0" />
                        <RadioButton contentDisplay="CENTER" layoutX="319.0" layoutY="135.0" mnemonicParsing="false" text="Right answer" textAlignment="CENTER">
                            <toggleGroup>
                                <ToggleGroup fx:id="buttonGroup" />
                            </toggleGroup>
                        </RadioButton>
                        <Button alignment="CENTER" contentDisplay="CENTER" layoutX="102.0" layoutY="285.0" mnemonicParsing="false" text="Save" />
                        <Button alignment="CENTER" contentDisplay="CENTER" layoutX="200.0" layoutY="285.0" mnemonicParsing="false" text="Delete" />
                        <Button alignment="CENTER" contentDisplay="CENTER" layoutX="155.0" layoutY="285.0" mnemonicParsing="false" text="Edit" />
                  <RadioButton contentDisplay="CENTER" layoutX="319.0" layoutY="168.0" mnemonicParsing="false" text="Right answer" textAlignment="CENTER" toggleGroup="$buttonGroup" />
                  <RadioButton contentDisplay="CENTER" layoutX="319.0" layoutY="202.0" mnemonicParsing="false" text="Right answer" textAlignment="CENTER">
                     <toggleGroup>
                        <ToggleGroup fx:id="buttonGroup1" />
                     </toggleGroup>
                  </RadioButton>
                  <RadioButton contentDisplay="CENTER" layoutX="319.0" layoutY="233.0" mnemonicParsing="false" text="Right answer" textAlignment="CENTER">
                     <toggleGroup>
                        <ToggleGroup fx:id="buttonGroup11" />
                     </toggleGroup>
                  </RadioButton>
                  <Button layoutX="55.0" layoutY="364.0" mnemonicParsing="false" text="Back" />
                  <Button layoutX="129.0" layoutY="364.0" mnemonicParsing="false" text="Next" />
                  <Button layoutX="209.0" layoutY="364.0" mnemonicParsing="false" text="New" />
                    </children>
                </Pane>
            </center>
            <left>
                <Pane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER">
                    <children>
                        <Label alignment="CENTER" layoutX="-8.0" layoutY="-16.0" prefHeight="74.0" prefWidth="193.0" text="Question list" textAlignment="CENTER" />
                        <ChoiceBox fx:id="allQuestions" layoutX="14.0" layoutY="37.0" prefHeight="310.0" prefWidth="150.0" />
                    </children>
                </Pane>
            </left>
        </BorderPane>
    </center>
</BorderPane>

完全错误:

"C:\Program Files\Java\jdk1.8.0_221\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Educational Edition 2020.2.4\lib\idea_rt.jar=50487:C:\Program Files\JetBrains\IntelliJ IDEA Educational Edition 2020.2.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_221\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\rt.jar;C:\Users\dor h\IdeaProjects\Hamka_Team_Jellyfish\out\production\Hamka_Team_Jellyfish;C:\Users\dor h\IdeaProjects\Hamka_Team_Jellyfish\lib\java-json.jar;C:\Users\dor h\IdeaProjects\Hamka_Team_Jellyfish\java-json.jar;C:\Program Files\Java\javafx-sdk-11.0.2\lib\src.zip;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx-swt.jar;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.web.jar;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.base.jar;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.fxml.jar;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.media.jar;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.swing.jar;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.controls.jar;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.graphics.jar" View.QuestionEditor
Exception in Application constructor
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Unable to construct Application instance: class View.QuestionEditor
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:907)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$1(LauncherImpl.java:182)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodException: View.QuestionEditor.<init>()
    at java.lang.Class.getConstructor0(Class.java:3082)
    at java.lang.Class.getConstructor(Class.java:1825)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$7(LauncherImpl.java:818)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$3(WinApplication.java:177)
    ... 1 more
Exception running application View.QuestionEditor

Process finished with exit code 1

我做错什么了?为什么我不能运行视图,即使我可以在场景生成器中构建它?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题