本文介绍了Application start方法中的异常java.lang.reflect.InvocationTargetException JavaFX图像转换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试为我的JavaFX应用程序添加图像转换时,它抛出了这个错误,我在Stackoverflow中查看了之前的问题和答案,但所有解决方案都只针对每个问题。我使用的是netbeans IDE 。

When i try to add image transition for my JavaFX app, it has thrown this error,I checked the previous questions and answers here in Stackoverflow, but all the solutions were specific for each of those questions only.I am using netbeans IDE.

at
javafx.f xml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2579)at
javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) at
javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214)at
javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)at
javafx.fxml.FXMLLoader.loadImpl (FXMLLoader.java:3148)
javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)at
javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)at
javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)at
finalf.FinalF.start(FinalF.java:38)at
com.sun.javafx.application.LauncherImpl.lambda $ launchApplication1 $ 162 (LauncherImpl.java:863)
at
com.sun.javafx.application.PlatformImpl.lambda $ runAndWait $ 175(PlatformImpl.java:326)
at
com.sun。 javafx.application.PlatformImpl.lambda $ null $ 173(PlatformImpl.java:295)
at java.security.AccessController.doP rivileged(Native Method)at
com.sun.javafx.application.PlatformImpl.lambda $ runLater $ 174(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 $ 148(WinApplication.java:191)
... 1更多引起:java.lang.NullPointerException:位置是
必需。在javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3207)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)at
javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java) :3148)
javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)at
javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)at
javafx.fxml。 FXMLLoader.load(FXMLLoader.java:3097)at
finalf.FXMLDocumentController.loadSplashScreen(FXMLDocumentController.java:55)
at
finalf.FXMLDocumentController.initialize(FXMLDocumentController.java:69)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)... 17更多
异常运行应用程序finalf.FinalF Java结果:1

at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2579) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097) at finalf.FinalF.start(FinalF.java:38) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(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$148(WinApplication.java:191) ... 1 more Caused by: java.lang.NullPointerException: Location is required. at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3207) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097) at finalf.FXMLDocumentController.loadSplashScreen(FXMLDocumentController.java:55) at finalf.FXMLDocumentController.initialize(FXMLDocumentController.java:69) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548) ... 17 more Exception running application finalf.FinalF Java Result: 1

这里是代码

SplashFXML.fxml

SplashFXML.fxml

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

<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.StackPane?>


<StackPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="574.0" xmlns="http://javafx.com/javafx/8.0.101" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <ImageView fitHeight="450.0" fitWidth="560.0" pickOnBounds="true" preserveRatio="true">
         <image>
            <Image url="@loader.png" />
         </image>
      </ImageView>
   </children>
</StackPane>

FXMLDocument.fxml

FXMLDocument.fxml

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

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane id="AnchorPane" prefHeight="462.0" prefWidth="473.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.101" fx:controller="finalf.FXMLDocumentController">
    <children>
        <Button fx:id="button" layoutX="126.0" layoutY="225.0" onAction="#handleButtonAction" prefHeight="31.0" prefWidth="212.0" text="Play" />
        <Label fx:id="label" layoutX="126" layoutY="120" minHeight="16" minWidth="69" />
      <Button layoutX="126.0" layoutY="312.0" mnemonicParsing="false" prefHeight="31.0" prefWidth="212.0" text="Instructions" />
      <TextField layoutX="126.0" layoutY="141.0" prefHeight="31.0" prefWidth="212.0" />
    </children>
</AnchorPane>

FXMLDocumentController.java

FXMLDocumentController.java

package finalf;

import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.animation.FadeTransition;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.util.Duration;

public class FXMLDocumentController implements Initializable {

    @FXML
    private Label label;

    @FXML
    private AnchorPane root;

    @FXML
    private void handleButtonAction(ActionEvent event) {
       try{
       FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Second_Window.fxml"));
       Parent rootl = (Parent) fxmlLoader.load();
       Stage stage = new Stage();

       stage.setTitle("Foker");
       stage.setScene(new Scene(rootl));
       stage.show();
       }catch(Exception e){
        System.out.println("Can't load new window");
       }
    }


    private void loadSplashScreen() throws IOException{
      StackPane pane = FXMLLoader.load(getClass().getResource("/SplashFXML.fxml"));
      root.getChildren().setAll(pane);
      FadeTransition fadeIn = new FadeTransition(Duration.seconds(3),pane);
      fadeIn.setFromValue(0);
      fadeIn.setToValue(1);
      fadeIn.setCycleCount(1);

      fadeIn.play();

    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        try {
            loadSplashScreen();
        } catch (IOException ex) {
            Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }    

}

FinalF。 java

FinalF.java

package finalf;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.stage.Stage;


public class FinalF extends Application {

    @FXML
    private Button button;

    @FXML
    private Label label;

    @FXML
    void handleButtonAction(ActionEvent event){


    }

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

        Scene scene = new Scene(root);

        stage.setScene(scene);
        stage.show();
    }


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

}


推荐答案

让我们在 FXMLDocumentController.java 中尝试


  1. ,更改中的第一行loadSplashScreen()方法,

  1. in FXMLDocumentController.java, change the first line in loadSplashScreen() method,

来自

StackPane pane = FXMLLoader.load(getClass().getResource("/SplashFXML.fxml"));

StackPane pane = FXMLLoader.load(getClass().getResource("SplashFXML.fxml"));



    FXMLDocument.fxml中的
  1. ,将 fx:id =root添加到 AnchorPane 部分。让它改变

  1. in FXMLDocument.fxml, add fx:id="root" to the AnchorPane section. make it change

来自

AnchorPane id="AnchorPane" prefHeight="462.0" prefWidth="473.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.101" fx:controller="finalf.FXMLDocumentController"

to

AnchorPane id="AnchorPane" fx:id="root" prefHeight="462.0" prefWidth="473.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.101" fx:controller="finalf.FXMLDocumentController"

希望它在这两个步骤后解决您的问题。

Hope it solves your problem after this two steps.

这篇关于Application start方法中的异常java.lang.reflect.InvocationTargetException JavaFX图像转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-16 05:01