如何防止javafx在图像中造成非法的错误?

时间:2014-10-20 13:41:19

标签: java javafx

我试图用JavaFX在一个盒子里显示一张图片。我遵循了Oracle上记录的方法,但它仍然无效,尽管它与Oracle上显示的示例非常相似。我的代码在这里:

public class TesterJavaFX extends Application {

@Override
public void start(Stage primaryStage) {
    Image img = new Image("character.png");
    ImageView imgview = new ImageView();
    imgview.setImage(img);
    imgview.setFitWidth(100);
    imgview.setPreserveRatio(true);
    imgview.setSmooth(true);
    imgview.setCache(true);
    HBox box = new HBox();
    box.getChildren().add(imgview);
    StackPane root = new StackPane();
    root.getChildren().add(box);
    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
}

}

我在" src"中有一个名为rocket.png的文件。目录。它甚至出现在IDE上。但Java导致非法争论异常,我不知道为什么。有谁能够帮我?感谢。

注意:导入都存在。

1 个答案:

答案 0 :(得分:1)

传递给Image构造函数的字符串是一个URL。如果图像文件位于类路径的根目录中,则以下内容应该起作用:

Image img = new Image(getClass().getResource("/character.png").toExternalForm());