问题描述
当我尝试为我的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 中尝试
- ,更改
中的第一行loadSplashScreen()
方法,
- 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中的
- ,将
fx:id =root
添加到 AnchorPane
部分。让它改变 - in FXMLDocument.fxml, add
fx:id="root"
to theAnchorPane
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图像转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!