У меня есть некоторые проблемы с настройкой пути к локальному изображению в моем приложении javaFX. Я хочу использовать значок для своей кнопки, но он не работает для локальных изображений, только с внешними ресурсами. Это мой код:
<Button fx:id="magicWangButton" mnemonicParsing="false" onAction="#magicWang" text="Magic wang">
<graphic>
<ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
<image>
<!--<Image url="/fxml/img/magic-wang.png" />-->
<Image url="https://i.stack.imgur.com/y1evM.png" />
<!--<Image url="/fxml/img/site-logo.png" />-->
<Image url="img/magic-wang.png"/>
</image>
</ImageView>
</graphic>
</Button>
Эта строка отлично работает:
<Image url="https://i.stack.imgur.com/y1evM.png" />
, но другие ... Мое изображение находится в пути: resources / fxml / img / все файлы fxml, расположенные в каталоге fxml. Я видел другие вопросы и ответы, но он использует конфигурацию в файлах Java, но это не то, что я искал.
2 ответа
Хитрость заключается в том, чтобы начать URL с «@» и вызвать FXMLLoader.setLocation ().
- относительные URL:
- < Li> @ one24.png :
< Li> @ изображение / two24.png < Li> @ .. / three24.png
- < Li> @ / four24.png
Обратите внимание, что я реализовал служебный класс: FXMLLoaders
Если вы придерживаетесь следующих соглашений об именах:
- MyComponent.java
- MyComponent.fxml (тот же пакет, что и MyComponent.java)
- MyComponent.properties (тот же пакет, что и MyComponent.java)
Вы можете использовать следующий код:
Для fx: корневых файлов FXML:
public MyComponent() {
FXMLLoaders.loadRoot(this);
}
< Сильный > В противном случае:
Parent root = FXMLLoaders.load(FxmlSampleApplication.class);
Библиотека доступна в Maven Central:
<dependency>
<groupId>org.drombler.commons</groupId>
<artifactId>drombler-commons-fx-core</artifactId>
<version>0.13</version>
</dependency>
Вы можете найти полный образец, который загружает изображения на GitHub.
Я также написал сообщение в блоге об этом служебном классе и соглашениях об именах.
Вы можете указать путь относительно fxml, начав значение атрибута с @
, см. Введение в FXML: разрешение местоположения
<Image url="@img/site-logo.png" />
Похожие вопросы
Новые вопросы
image
Тег изображения предназначен для вопросов, связанных с загрузкой, форматированием, сохранением, сжатием и отображением изображений в контексте исходного кода. Этот тег также следует использовать для помощи при использовании различных библиотек изображений. Вопросы о конкретных форматах изображений должны включать теги для этих форматов. Включите теги, чтобы указать, относится ли вопрос к конвертации, обработке и т. Д.