我试图用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导致非法争论异常,我不知道为什么。有谁能够帮我?感谢。
注意:导入都存在。
答案 0 :(得分:1)
传递给Image
构造函数的字符串是一个URL。如果图像文件位于类路径的根目录中,则以下内容应该起作用:
Image img = new Image(getClass().getResource("/character.png").toExternalForm());