Изображение JavaFX не показывается на сцене



Я пробовал несколько раз и несколькими способами, но я не могу заставить свой образ показать на сцене, как я хочу. Я думаю, что это может быть связано с путем, по которому java ищет ресурсы, но я не уверен, так как я только начинаю использовать визуальные библиотеки (в данном случае JavaFX). Вот моя структура каталогов:



MyProject
|_assets
| |_img
| |_myImage.jpg
|
|_some
|_other
|_folders
|
|_src
|_ve
|_org
|_project
|_MyProject.java
|_StratPage.fxml
|_StartPageController.java


Мне нужно ретривировать myImage.jpg для визуализации, и я попробовал следующее:



1) чистый подход fxml:




<ImageView
id="logo"
fx:id="logo"
fitHeight="99.0"
fitWidth="99.0"
layoutX="14.0"
layoutY="18.0"
pickOnBounds="true"
preserveRatio="true">
<image>
<Image url="@../../../../assets/img/myImage.jpg" />
</image>
</ImageView>



2) Использование как fxml, так и java. Объявления ImageView элемент с fx:id="logo", и вводим изображение из StartPageController.java следующим образом:



public class StartPageController implements Initializable {

@FXML
private ImageView logo;


@Override
public void initialize(URL url, ResourceBundle rb) {
this.logo = new ImageView("file:../../../../assets/img/myImage.jpg");
}

}


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



Обновления:



Первый



Я попытался отказаться от предложенной структуры каталогов и поместил файл изображения в ту же папку StartPageController.java. Делая

logo = new ImageView(new Image(getClass().getResourceAsStream("myImage.jpg")))


Я не получаю никаких исключений, но изображение не визуализируется, что предполагает для меня это не поиск ресурса, а рендеринг изображения. Может быть, это из-за отсутствия библиотеки? Я работаю в среде Windows 8, используя Netbeans 8.0. Еще раз спасибо за ответы.



Второй



Я только что деактивировал упаковку и распространение приложения в свойствах проекта в Netbeans. Теперь изображения отображаются правильно, но я не считаю проблему решенной, так как когда мне нужно распространять программное обеспечение, оно снова появится. Пожалуйста, помощь все еще нужна! :)
1229   3  

3 ответов:

У меня была та же ошибка, что и у вас. Поэтому для исправления он поместил мой образ в папку resources на том же уровне " src " моего проекта. Это мой код, и он работает.

public void showImage() {
    try {
        Image image = new Image("resources/img/akonolingaMap.jpg");
        imageView.setImage(image);
        imageView.setCache(true);
    } catch (Exception e) {
        printStackTrace();
    }
}

Я проверил код в своем собственном проекте,и он работает с приведенным ниже фрагментом кода. Я приспособил его к вашему примеру

 this.logo = new ImageView(new Image(getClass().getResourceAsStream("/assets/img/myImage.jpg")));

В java-приложении существует различие между файловой системой File и resource (на пути к классу, внутри .кувшин).

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

Однако тогда изображение должно быть внутри банки.

Возможно:

/src/assets/img/myImage.jpg

Или /активов топ-исходный каталог.

Затем /img/myImage.jpg (или в первом случае /assets/img/myImage.jpg)

Программно один не использует файл, но URL getClass().getResource("/img/myImage.jpg") или getResourceAsStream.

Comments

    Ничего не найдено.