#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. Спасибо вам обоим. Я намеревался указать в ОП, что файл изображения находится в папке проекта, но, к сожалению, я пропустил это. Изображения в этом месте всегда работали при создании графического интерфейса в коде. Перемещение изображения в пакет решило проблему.