不仅如此,其他代码也有相同的问题。只是不能使用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不会出现在您的类路径中。
/Users/fangyuan/Desktop/PIC.png
要从文件而不是类路径中读取,请将file://协议放在要读取的路径前面:
file://
file:///Users/fangyuan/Desktop/PIC.png
要么
Paths.get("/Users/fangyuan/Desktop/PIC.png").toUri().toString()
这将输出相同的东西。