当前位置: 首页 > 知识库问答 >
问题:

无法在JavaFX中加载图像

淳于博文
2023-03-14

为了创建带有图像的对话框,我测试了这段代码。

final int xSize = 400;
final int ySize = 280;
final Color backgroundColor = Color.WHITE;
final String text = "SQL Browser";
final String version = "Product Version: 1.0";

final Stage aboutDialog = new Stage();
aboutDialog.initModality(Modality.WINDOW_MODAL);

Button closeButton = new Button("Close");

closeButton.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent arg0) {
        aboutDialog.close();
    }
});

GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));

Image img = new Image("logo.png");
ImageView imgView = new ImageView(img);

grid.add(imgView, 0, 0);

grid.add(new Text(text), 0, 1);
grid.add(new Text(version), 0, 2);
grid.add(closeButton, 14, 18);

Scene aboutDialogScene = new Scene(grid, xSize, ySize, backgroundColor);
aboutDialog.setScene(aboutDialogScene);
aboutDialog.show();

我将图像文件放入目录/src。但是由于某种原因,图像不显示。你能帮我改正错误吗

共有3个答案

家经纶
2023-03-14
Image img = new Image("file:/logo.png");

或使用路径的方式:

Image img = new Image("file:c:/logo.png");

File f = new File("c:\\logo.png");
Image img = new Image(f.toURI().toString());

也可以使用:

new Image(file:src/logo.png) //root of project
解晟
2023-03-14

试试这个:

img = new Image("/logo.png");

如果没有给出指示URL(如http:或文件:)的协议部分,则该文件应驻留在默认包中。如果你想把它放在一个不同的包里,就说com。我的以类似路径的方式添加此信息的图像:

img = new Image("/com/my/images/logo.png");
昝晗昱
2023-03-14

只需替换此代码:

Image img = new Image("logo.png");

用这个

Image img = new Image("file:logo.png");

参考文档https://docs.oracle.com/javase/8/javafx/api/javafx/scene/image/Image.html

当您将字符串传递给图像类时,可以通过四种不同的方式(从docu复制)处理该字符串:

// The image is located in default package of the classpath
Image image1 = new Image("/flower.png");

// The image is located in my.res package of the classpath
Image image2 = new Image("my/res/flower.png");

// The image is downloaded from the supplied URL through http protocol
Image image3 = new Image("http://sample.com/res/flower.png");

// The image is located in the current working directory
Image image4 = new Image("file:flower.png");

文件:前缀只是一个URI方案,或者换句话说,它是http:协议分类器的对应项。这也适用于文件浏览器或web浏览器…;)

如需进一步参考,您可以查看文件URI方案的wiki页面:https://en.wikipedia.org/wiki/File_URI_scheme

快乐编码,

卡拉施

 类似资料:
  • 问题内容: 我测试了此代码以创建带有图像的对话框。 我将图像文件放入目录中。但是由于某些原因,图像无法显示。你能帮我纠正我的错误吗? 问题答案: 只需替换以下代码: 有了这个 Docu参考。 https://docs.oracle.com/javase/8/javafx/api/javafx/scene/image/Image.html 当您将a传递给该类时,可以用 四种不同的方式 处理( 从do

  • 我对javafx非常陌生,而且已经学会了使用代码教程进行测试时: 异常是由第行

  • 我的JavaFX项目可以在一台机器中加载图像,但是相同的代码不能在另一台机器中加载图像。 我有包结构(在src中)-/com/mypackagestructure/view/images/,它保存图像文件。 我的CSS文件位于-/com/mypackagestructure/view/Login。css 我在另一台机器上有完全相同的代码(安装了相同的操作系统、相同的Eclipse IDE和JDK/

  • 下面是我的代码: 只是一个加载图像的文件。 我得到以下错误: 以下是完整的代码:

  • 这是我的代码: controller.java main.java 当我运行我的项目并在文本字段中键入1并单击按钮时,它将显示图片。现在,在不关闭程序的情况下,我将一个2.png文件添加到res文件夹中。并在文本字段中键入2。点击该按钮后,它给我“java.lang.IllegalArgumentException:Invalid URL:Invalid URL或resource not Foun

  • 我不能加载imageview到网格视图所有代码都是真的,但我不能加载更多5个图像 这里是添加新图像时显示错误