我对javafx非常陌生,而且已经学会了java。朗,反思一下。InvocationTargetException
使用代码教程进行测试时:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
public static final String IMAGE_NAME = "groceries.jpg";
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Scene scene = new Scene(setupScene(), 300, 300);
primaryStage.setScene(scene);
primaryStage.setTitle("Image Screen");
primaryStage.show();
}
StackPane setupScene() {
StackPane root = new StackPane();
ImageView imageView = new ImageView();
imageView.setPreserveRatio(true);
imageView.setSmooth(true);
Image image = new Image(getClass().getClassLoader().getResource(IMAGE_NAME).toString());
imageView.setImage(image);
root.setPrefSize(250, 250);
imageView.setFitHeight(root.getPrefHeight());
imageView.setFitWidth(root.getPrefWidth());
root.getChildren().add(imageView);
return root;
}
}
异常是由java引起的。lang.NullPointerException
第行图像图像=新图像(getClass()。getClassLoader()。getResource(图像名称)。toString())
图像文件在我的项目文件夹中,但似乎没有加载。我能够使用
image image=new image(新文件(image_NAME))获得图像。toURI()。图尔()。toString())
,但当我切换回图像时,图像=新图像(getClass()。getClassLoader()。getResource(图像名称)。toString())
,它就是不起作用。
有人知道我的程序为什么会这样吗?任何想法都将不胜感激。。。
编辑:我的图像文件在src文件夹的同一级别:
- projectfolder
- groceries.jpg
- src
- Main.java
我正在使用IntelliJ JavaFX应用程序创建项目,所有内容都处于默认状态。
getClass()。getClassLoader()。getResource()行,在主类所在的同一位置搜索文件。
如果您在src中有此图像,您只需要添加一个'/':
private String theme1Url = getClass().getResource("/groceries.jpg").toExternalForm();
图像图像=新图像(getClass(). getClassLoader(). getResource(IMAGE_NAME). toString())
和图像图像=新图像(new File(IMAGE_NAME). toURI(). toURL(). toString())
做两件不同的事情。
第一个将获得基于类加载器的资源,这是直接从jar文件中提取资源时最常用的。第二个用于从文件系统加载图像,这就是为什么它在您的情况下有效(这就是文件所在的位置!)
问题内容: 我测试了此代码以创建带有图像的对话框。 我将图像文件放入目录中。但是由于某些原因,图像无法显示。你能帮我纠正我的错误吗? 问题答案: 只需替换以下代码: 有了这个 Docu参考。 https://docs.oracle.com/javase/8/javafx/api/javafx/scene/image/Image.html 当您将a传递给该类时,可以用 四种不同的方式 处理( 从do
为了创建带有图像的对话框,我测试了这段代码。 我将图像文件放入目录。但是由于某种原因,图像不显示。你能帮我改正错误吗
这是我的代码: controller.java main.java 当我运行我的项目并在文本字段中键入1并单击按钮时,它将显示图片。现在,在不关闭程序的情况下,我将一个2.png文件添加到res文件夹中。并在文本字段中键入2。点击该按钮后,它给我“java.lang.IllegalArgumentException:Invalid URL:Invalid URL或resource not Foun
我在从控制器加载javaFX中的图像时遇到了一些麻烦。 我把一些图像放在src/文件夹中,甚至放在img/文件夹中,但仍然得到“无效URL或未找到资源”。 但我无法检索图像“java.lang.IllegalArgumentException:无效URL或未找到资源” 谢谢你的帮助
我的JavaFX项目可以在一台机器中加载图像,但是相同的代码不能在另一台机器中加载图像。 我有包结构(在src中)-/com/mypackagestructure/view/images/,它保存图像文件。 我的CSS文件位于-/com/mypackagestructure/view/Login。css 我在另一台机器上有完全相同的代码(安装了相同的操作系统、相同的Eclipse IDE和JDK/
正如上面所说的那样。oracle关于图像类: 我在github上分享了我的简单项目,所以你可以很容易地访问代码。 这是我的一段代码: 但这不想为我工作,我明白了: 原因:java。lang.IllegalArgumentException:在javafx上找不到无效的URL或资源。场景形象形象validateUrl(Image.java:1081) 在(Image.java:1081)我发现: 我