#java
#java #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;
}
}
Ответ №1:
Конструктор изображения принимает URL-адрес в качестве параметра. Если вы не добавляете в него протокол, то предполагается, что элемент выходит из пути к классу. Очевидно, /Users/fangyuan/Desktop/PIC.png
этого не будет в вашем classpath.
Для чтения из файла вместо пути к классу вставьте file://
протокол перед путем, который вы хотите прочитать:
file:///Users/fangyuan/Desktop/PIC.png
Или
Paths.get("/Users/fangyuan/Desktop/PIC.png").toUri().toString()
который выводил бы то же самое.