也许你从项目目录外部链接图像,我做了一个小而简单的例子,效果很好。
将您的图像放入您放置fxml文件的同一个包中,并在Scene Builder中再次将其链接到新位置。
这里有一个小代码:App.java
package com.example.images;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class App extends Application{
@Override
public void start(Stage stage) throws Exception {
Parent parent = FXMLLoader.load(getClass().getResource("images.fxml"));
stage.setTitle("Image set in Scene Builder");
Scene scene = new Scene(parent);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
和fxml文件:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.effect.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<AnchorPane id="AnchorPane" fx:id="mainPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="com.example.images.controller.MainController">
<children>
<ImageView fitHeight="337.875" fitWidth="540.6" layoutX="14.0" layoutY="14.0" pickOnBounds="true" preserveRatio="true">
<effect>
<Lighting surfaceScale="5.0">
<bumpInput>
<Shadow />
</bumpInput>
<light>
<javafx.scene.effect.Light.Distant azimuth="-135.0" />
</light>
</Lighting>
</effect>
<image>
<Image url="@1.png" backgroundLoading="true" />
</image>
</ImageView>
</children>
</AnchorPane>
派翠克
我在使用intelliJ,遇到了两次确切的问题,以下是如何处理它:
有一次问题是图像不在包中(即src中没有包),一旦我制作了一个包并将图片移动到那里,图像就被加载了。
另一次,通过删除intelliJ的“out”目录并再次构建项目来解决问题。
对于这个问题,我遇到了两种情况。一种是,也许你的“src”目录中的“重新编码”文件夹中没有你的图像。第二,如果你有,那么可能你的IDE还没有阅读它。例如,如果你正在使用Eclipse,在文件资源管理器上展开你的重新编码文件夹。如果你的图像不在那里,那么右键单击文件夹并选择刷新。之后你应该没事。