JavaFX устанавливает изображение, выбрасывает IllegalArgumentException - PullRequest
0 голосов
/ 22 марта 2020

В настоящее время я работаю над заданием для университета, в котором мне было поручено разработать систему управления запасами с использованием Java / JavaFX.

Мой рабочий каталог выглядит так:

-src
    -assets
        -image.png
    -GUI
        -viewProduct.fxml
        -viewProductController.class

Это код в моем представленииProduct.f xml:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>

<AnchorPane fx:id="adminPanelPage" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="525.0" prefWidth="514.0" style="-fx-background-color: #3f3f3f;" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.banton.GUI.viewProductController">
   <children>
      <ImageView fx:id="imgProductImage" fitHeight="175.0" fitWidth="175.0" layoutX="31.0" layoutY="37.0" pickOnBounds="true" preserveRatio="true">
          <image>
              <Image url="@../productIMGs/imageNotFound.png" />
          </image>
      </ImageView>
      <Label layoutX="223.0" layoutY="72.0" text="Product ID: " textFill="WHITE">
         <font>
            <Font name="System Bold" size="14.0" />
         </font></Label>
      <Label layoutX="223.0" layoutY="99.0" text="Product Name:" textFill="WHITE">
         <font>
            <Font name="System Bold" size="14.0" />
         </font>
      </Label>
      <Label layoutX="223.0" layoutY="127.0" text="Product Type:" textFill="WHITE">
         <font>
            <Font name="System Bold" size="14.0" />
         </font>
      </Label>
      <Label layoutX="223.0" layoutY="155.0" text="Price: " textFill="WHITE">
         <font>
            <Font name="System Bold" size="14.0" />
         </font>
      </Label>
      <Label layoutX="31.0" layoutY="236.0" text="Product Description:" textFill="WHITE">
         <font>
            <Font name="System Bold" size="14.0" />
         </font>
      </Label>
      <TextArea fx:id="txtProductDescription" editable="false" layoutX="31.0" layoutY="263.0" prefHeight="71.0" prefWidth="454.0" promptText="This is where the description text will be" style="-fx-background-color: #3f3f3f;" wrapText="true">
         <font>
            <Font size="13.0" />
         </font>
      </TextArea>
      <ImageView fitHeight="107.0" fitWidth="175.0" layoutX="170.0" layoutY="440.0" pickOnBounds="true" preserveRatio="true">
         <image>
            <Image url="@../assets/editProduct.png" />
         </image>
      </ImageView>
      <ImageView fitHeight="43.0" fitWidth="59.0" layoutX="442.0" layoutY="16.0" pickOnBounds="true" preserveRatio="true">
         <image>
            <Image url="@../assets/print.png" />
         </image>
      </ImageView>
      <Label fx:id="txtProductID" layoutX="308.0" layoutY="72.0" prefHeight="20.0" prefWidth="187.0" text="&lt;&lt;product id&gt;&gt;" textFill="WHITE">
         <font>
            <Font size="14.0" />
         </font>
      </Label>
      <Label fx:id="txtProductName" layoutX="332.0" layoutY="99.0" prefHeight="20.0" prefWidth="166.0" text="&lt;&lt;product  name&gt;&gt;" textFill="WHITE">
         <font>
            <Font size="14.0" />
         </font>
      </Label>
      <Label fx:id="txtProductType" layoutX="325.0" layoutY="127.0" prefHeight="20.0" prefWidth="166.0" text="&lt;&lt;product  type&gt;&gt;" textFill="WHITE">
         <font>
            <Font size="14.0" />
         </font>
      </Label>
      <Label fx:id="txtPrice" layoutX="273.0" layoutY="155.0" prefHeight="20.0" prefWidth="166.0" text="&lt;&lt;Price&gt;&gt;" textFill="WHITE">
         <font>
            <Font size="14.0" />
         </font>
      </Label>
      <Label layoutX="117.0" layoutY="358.0" text="Total Stock Level:" textFill="WHITE">
         <font>
            <Font name="System Bold" size="18.0" />
         </font>
      </Label>
      <Label fx:id="txtStockLevel" layoutX="277.0" layoutY="358.0" text="&lt;&lt;Stock Level&gt;&gt;" textFill="WHITE">
         <font>
            <Font name="System Bold" size="18.0" />
         </font>
      </Label>
      <Label layoutX="113.0" layoutY="385.0" text="Total Stock Value:" textFill="WHITE">
         <font>
            <Font name="System Bold" size="18.0" />
         </font>
      </Label>
      <Label fx:id="txtStockValue" layoutX="277.0" layoutY="385.0" text="&lt;&lt;Stock Value&gt;&gt;" textFill="WHITE">
         <font>
            <Font name="System Bold" size="18.0" />
         </font>
      </Label>
   </children>
</AnchorPane>

Однако я пытаюсь изменить изображение (imgProductImage) в зависимости от выбранного элемента, используя следующий код:

Image image = new Image("productIMGs/imageNotFound.png");
imgProductImage.setImage(image);

Тем не менее по какой-то причине я получаю следующую ошибку:

java.lang.IllegalArgumentException: Invalid URL or resource not found

Я пробовал следующее:

  1. Перемещение файл изображения вокруг каталога проекта - в том числе вне sr c
  2. с использованием Image image = new Image(getClass().getResourceAsStream("/assets/IMAGENAME.png"))
  3. Я даже скопировал точный код от другого студента, чтобы проверить функциональность, которая не работала .
  4. с использованием Image image = new Image(getClass().getResource("/assets/IMAGENAME.png"))

Следовательно, я подозреваю, что это может быть проблема IntelliJ?

Одна вещь, которую я заметил, это то, что IntelliJ автоматически показывает «s:» в new Image, тогда как его говорит «url:»:

«s:» в изображении

У кого-нибудь были подобные проблемы раньше? Любая помощь приветствуется, срок быстро приближается.

1 Ответ

0 голосов
/ 22 марта 2020

Только что нашел решение, для всех, у кого такая же проблема:

Image image = new Image("file:IMAGENAME.png")

До сих пор не ясно, почему простое размещение URL не работает, но это кажется хорошее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...