除了此图像显示外,所有功能都正常工作。但在场景构建器预览中它的工作正常。有人可以帮忙吗?
答案 0 :(得分:10)
也许你链接了项目目录之外的图片,我做了一个小而简单的例子,效果很好。
将图像放入相同的包中,放置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>
帕特里克
答案 1 :(得分:1)
这个问题我遇到了两种情况。一种可能是您的“ src”目录中的“ recources”文件夹中没有图像。第二,如果您这样做,则可能是您的IDE尚未读过。例如,如果您使用的是Eclipse,请在“文件资源管理器”上展开“ recouces”文件夹。如果您的图像不在其中,请右键单击该文件夹,然后选择刷新。那之后你应该没事的。
答案 2 :(得分:0)
我正在使用intelliJ,并且两次遇到了确切的问题,下面是如何处理它:
有一次解决方案是图像不在包装中(即src中没有包装),一旦我制作了一个包装并将照片移到那里,就加载了图像。
另一次解决该问题的方法是删除intelliJ的“ out”目录,然后再次构建该项目。