ImageView在JavaFX中不起作用

不仅如此,其他代码也有相同的问题。只是不能使用ImageView。

环境:macOS,IntelliJ

造成原因:java.lang.IllegalArgumentException:无效的URL:无效的URL或找不到资源

public class ShowHboxVbox extends Application {

static String s = "/Users/fangyuan/Desktop/PIC.png";

@Override

public void start(Stage primaryStage) {

BorderPane borderPane = new BorderPane();

borderPane.setTop(getHbox());

Scene scene = new Scene(borderPane);

primaryStage.setTitle("title");

primaryStage.setScene(scene);

primaryStage.show();

}

private HBox getHbox() {

HBox hBox = new HBox(15);

hBox.setPadding(new Insets(15,15,15,15));

hBox.setStyle("-fx-background-color: gold");

hBox.getChildren().add(new Button("computer science"));

hBox.getChildren().add(new Button("chemist"));

ImageView imageView = new ImageView(new Image(s));

hBox.getChildren().add(imageView);

return hBox;

}

}

回答:

该图像构造函数接受一个url作为参数。如果您未在其中添加协议,则它将假定该项目来自类路径。显然,/Users/fangyuan/Desktop/PIC.png不会出现在您的类路径中。

要从文件而不是类路径中读取,请将file://协议放在要读取的路径前面:

file:///Users/fangyuan/Desktop/PIC.png

要么

Paths.get("/Users/fangyuan/Desktop/PIC.png").toUri().toString()

这将输出相同的东西。

以上是 ImageView在JavaFX中不起作用 的全部内容, 来源链接: utcz.com/qa/420841.html

回到顶部