Отображаемое изображение JavaFX Fxml

#javafx #fxml

Вопрос:

Я пытался реализовать приложение JavaFX, которое включает в себя отображение изображения с использованием fxml.

Однако мне неясно, как успешно создать URL-адрес изображения.

Я пробовал использовать аннотацию амперсанда для создания относительного пути, а также пробовал абсолютный путь, но все они отклоняются IDE.

Следовательно, я создал упрощенное приложение следующим образом:

Main.java

 package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Display an Image");
        primaryStage.setScene(new Scene(root, 300, 200));
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}
 

образец.fxml

 <?import javafx.scene.layout.FlowPane?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.image.Image?>
<FlowPane fx:controller="sample.Controller"
          xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
    <ImageView fx:id="ivWoodland">
        <image>
            <Image fx:id="imgWoodland" url="file:///D:/TF/ImageDemo/woodland.jpg"/>

        </image>

    </ImageView
 

Если кто-нибудь сможет сообщить мне, как отформатировать URL-адрес, я буду очень признателен.

Спасибо.

Комментарии:

1. Вы должны загрузить его как ресурс, который входит в комплект как часть вашего приложения, а не как файл. Где находится изображение относительно файла FXML? Если вы используете url="@path/to/image.jpg" , путь будет рассматриваться как относительный к файлу FXML. Если вы используете url="path/to/image.jpg" путь, он будет рассматриваться как относительный к пути к классу.

2. Если ваш код модульный, я рекомендую этот @ подход; это облегчит вашу жизнь.

3. Спасибо вам обоим. Я намеревался указать в ОП, что файл изображения находится в папке проекта, но, к сожалению, я пропустил это. Изображения в этом месте всегда работали при создании графического интерфейса в коде. Перемещение изображения в пакет решило проблему.