簡體   English   中英

運行我的代碼時出現 FXML 異常錯誤

[英]FXML Exception error while running my code

這是我的主要內部應用程序 package:

package application;

import java.net.URL;

import javax.swing.JOptionPane;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import model.Model;


public class Main extends Application {
Parent root;
Scene scene;
@Override
public void start(Stage primaryStage) {
    try {
        URL url = getClass().getResource("/view/AddCustomer.fxml");
        root = FXMLLoader.load(url);
        scene = new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.setOnCloseRequest(e -> {
            int save = JOptionPane.showConfirmDialog(null, "Do you want to save changes in the product table?");
            if (save == 0) {
                Model.getInstance().SaveCustomers();
                Model.getInstance().SaveSessions();
                Model.getInstance().SaveAdministrators();
                Model.getInstance().SaveCoachs();
            }
            System.exit(0);
        });
        primaryStage.show();
    } catch(Exception e) {
        e.printStackTrace();
    }
    
}
public static void main(String[] args) {

    launch(args);
}
}

這是我在 controller package 內的 addCustomerController:

package controller;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField;
import javafx.scene.layout.Pane;

public class AddCustomerController {

    @FXML
    private Button cancelMemberButton;

    @FXML
    private Pane customerPane;

    @FXML
    private RadioButton dailyMemberType;

    @FXML
    private TextField memberDiscountField;

    @FXML
    private RadioButton memberFemaleButton;

    @FXML
    private TextField memberIdField;

    @FXML
    private RadioButton memberMaleButton;

    @FXML
    private TextField memberMobileField;

    @FXML
    private TextField memberNameField;

    @FXML
    private TextField memberNationalityField;

    @FXML
    private RadioButton monthlyMemberType;

    @FXML
    private Button saveMemberButton;

    @FXML
    private RadioButton yearlyMemberType;

    @FXML
    void cancelButtonClick(ActionEvent event) {

    }

    @FXML
    void saveButtonClick(ActionEvent event) {

    }

}

這是視圖包中的 FXML 文件(名為 AddCustomer.fxml):

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

<?import com.gluonhq.charm.glisten.control.ToggleButtonGroup?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.RadioButton?>
<?import javafx.scene.control.Separator?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>

<Pane fx:id="customerPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="532.0" prefWidth="789.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.AddCustomerController">
   <children>
      <Label alignment="CENTER" contentDisplay="CENTER" layoutX="258.0" layoutY="34.0" prefHeight="41.0" prefWidth="274.0" text="Add Customer" textFill="#860b0b">
         <font>
            <Font name="Arial" size="37.0" />
         </font>
      </Label>
      <Separator layoutY="98.0" prefHeight="1.0" prefWidth="789.0" style="-fx-background-color: #860b0b;">
         <opaqueInsets>
            <Insets />
         </opaqueInsets>
      </Separator>
      <Label layoutX="27.0" layoutY="144.0" prefHeight="23.0" prefWidth="103.0" text="Member ID" />
      <Label layoutX="27.0" layoutY="195.0" prefHeight="23.0" prefWidth="103.0" text="Name" />
      <Label layoutX="27.0" layoutY="243.0" prefHeight="23.0" prefWidth="103.0" text="Mobile" />
      <Label layoutX="27.0" layoutY="296.0" prefHeight="23.0" prefWidth="103.0" text="Nationality" />
      <Label layoutX="27.0" layoutY="345.0" prefHeight="23.0" prefWidth="103.0" text="Gender" />
      <Label layoutX="27.0" layoutY="394.0" prefHeight="23.0" prefWidth="103.0" text="MemberShip Type" />
      <Label layoutX="27.0" layoutY="440.0" prefHeight="23.0" prefWidth="103.0" text="Discount" />
      <TextField fx:id="memberIdField" layoutX="246.0" layoutY="143.0" prefHeight="30.0" prefWidth="486.0" />
      <TextField fx:id="memberNameField" layoutX="246.0" layoutY="194.0" prefHeight="25.0" prefWidth="486.0" />
      <TextField fx:id="memberMobileField" layoutX="246.0" layoutY="242.0" prefHeight="25.0" prefWidth="486.0" />
      <TextField fx:id="memberNationality" layoutX="246.0" layoutY="295.0" prefHeight="25.0" prefWidth="486.0" />
      <RadioButton fx:id="memberMaleButton" layoutX="341.0" layoutY="348.0" mnemonicParsing="false" text="Male" />
      <RadioButton fx:id="memberFemaleButton" layoutX="412.0" layoutY="348.0" mnemonicParsing="false" text="Female" />
      <RadioButton fx:id="dailyMemberType" layoutX="341.0" layoutY="397.0" mnemonicParsing="false" text="Daily" />
      <RadioButton fx:id="monthlyMemberType" layoutX="412.0" layoutY="397.0" mnemonicParsing="false" text="Monthly" />
      <RadioButton fx:id="yearlyMemberType" layoutX="499.0" layoutY="397.0" mnemonicParsing="false" text="Yearly" />
      <TextField fx:id="discountField" editable="false" layoutX="246.0" layoutY="439.0" prefHeight="25.0" prefWidth="486.0" />
      <Button fx:id="saveMemberButton" layoutX="246.0" layoutY="482.0" mnemonicParsing="false" onAction="#saveButtonClick" prefHeight="30.0" prefWidth="164.0" text="Save" />
      <Button fx:id="cancelMemberButton" layoutX="499.0" layoutY="482.0" mnemonicParsing="false" onAction="#cancelButtonClick" prefHeight="30.0" prefWidth="164.0" text="Cancel" />
      <ToggleButtonGroup layoutX="130.0" layoutY="170.0" selectionType="SINGLE" />
   </children>
</Pane>

這是我在運行 main 時遇到的錯誤:

javafx.fxml.LoadException: 
/C:/Users/ADMIN/eclipse-workspace/Project_V2_V2/bin/view/AddCustomer.fxml

    at javafx.fxml@19/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2707)
    at javafx.fxml@19/javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2949)
    at javafx.fxml@19/javafx.fxml.FXMLLoader.processImport(FXMLLoader.java:2793)
    at javafx.fxml@19/javafx.fxml.FXMLLoader.processProcessingInstruction(FXMLLoader.java:2758)
    at javafx.fxml@19/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2624)
    at javafx.fxml@19/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
    at javafx.fxml@19/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3331)
    at javafx.fxml@19/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3287)
    at javafx.fxml@19/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3255)
    at javafx.fxml@19/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3227)
    at javafx.fxml@19/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3203)
    at javafx.fxml@19/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3196)
    at Project_V2_V2/application.Main.start(Main.java:22)
    at javafx.graphics@19/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:847)
    at javafx.graphics@19/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:484)
    at javafx.graphics@19/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:457)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at javafx.graphics@19/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:456)
    at javafx.graphics@19/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
    at javafx.graphics@19/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics@19/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.ClassNotFoundException: com.gluonhq.charm.glisten.control.ToggleButtonGroup
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    at javafx.fxml@19/javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:3017)
    at javafx.fxml@19/javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:3006)
    at javafx.fxml@19/javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2947)
    ... 20 more

我在網上搜索問題,我發現網上提供的所有問題至少從我的理解來看與我的不相似。 我修復了代碼中的一些內容。 但是,它仍然沒有為我解決問題。 請我需要幫助解決這個問題。

您正在從他們的移動工具中使用 Gluons com.gluonhq.charm.glisten.control.ToggleButtonGroup。 你真的想那樣做嗎? 也許使用標准的 JavaFX ToggleGroup就足夠了。 如果你真的想使用 Gluons lib,那么你必須將這個implementation 'com.gluonhq:charm-glisten:6.2.2'添加到你的依賴項中。 但請注意,glisten 是專有產品,其許可證與 JavaFX 不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM