【发布时间】:2019-11-04 07:03:23
【问题描述】:
这是我的代码:
Controller.java
package sample
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
public class Controller {
@FXML
Button button;
@FXML
TextField text;
@FXML
ImageView iv;
public void handleBtn()
{
String name = text.getText();
String address = "./res/"+name+".png";
Image image = new Image(address);
iv.setImage(image);
}
}
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("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
和sample.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane prefHeight="387.0" prefWidth="481.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.171" fx:controller="sample.Controller">
<children>
<TextField fx:id="text" layoutX="41.0" layoutY="64.0" />
<Button fx:id="button" layoutX="64.0" layoutY="169.0" mnemonicParsing="false" onAction="#handleBtn" text="Button" />
<ImageView fx:id="iv" fitHeight="261.0" fitWidth="209.0" layoutX="222.0" layoutY="56.0" pickOnBounds="true" preserveRatio="true" />
</children>
</AnchorPane>
当我运行我的项目并在文本字段中输入 1 并单击按钮时,它会显示图片。现在在不关闭程序的情况下,我将一个 2.png 文件添加到 res 文件夹中。并在文本字段中输入 2。单击按钮后,它给了我“java.lang.IllegalArgumentException:无效的 URL:无效的 URL 或找不到资源”并且无法加载图像。但是如果我终止程序并重新运行它,输入 2 并单击按钮就可以了。
【问题讨论】:
-
您需要出示您的代码,以便我们在这里为您提供帮助。请查看如何创建 minimal reproducible example 然后 edit 您的问题以包含它。
-
@Zephyr 我完全改变了这个问题,所以它现在以一般的方式反映了我的问题。
-
您的代码仍然可能存在问题,我们需要查看该问题才能重现问题。你目前描述的应该是不可能的。
-
@Zephyr 我现在尝试编写一个完全独立的代码,我很快就会在这里添加。
-
你的网址不应该是一个网址吗?