2017-09-30 170 views
0

我有一个assets文件夹,里面装满了要在我创建的游戏中实现的图像,我希望在窗口中显示这些图像。这是我的代码到目前为止。JavaFX ImageView图像不显示

public class javafxtest extends Application { 
    public void start(Stage primaryStage) throws Exception { 
     Group root = new Group(); 
     Scene scene = new Scene(root, 600, 600); 

     Image test = new Image("file:assets/BA.png"); 
     ImageView piece = new ImageView(test); 
     piece.setX(10); 
     piece.setY(10); 

     Rectangle rct = new Rectangle(50, 150, 500, 300); 
     rct.setFill(Color.GRAY); 

     root.getChildren().addAll(rct, piece); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 
} 

这将是一个程序运行IntelliJ /从一个罐子。资产文件夹与此文件位于同一目录中。我没有得到任何文件路径错误,所以我认为它可以找到图像,但它并没有出现在屏幕上,矩形也没有。公平的警告,我从头开始学习JavaFX,我发现没有太多解释事情是如何工作的,所以这可能是一个愚蠢的问题。

+0

如果图像被入瓶中,你应该通过'getResource'访问:'新的图像(的getClass()的getResource( “/资产/ BA.png”)toExternalForm()。 )' – fabian

+0

只需要在intellij中,所以上面的结果为空指针异常对我来说 – 420fedoras

+1

您需要将您的图像添加到您的项目并使用'getRessource()',或者您需要编写图像的完整路径。 –

回答

1

通过文件系统访问映像是错误的选择,当映像实际上是一个资产(即,它分布在组成您的程序的.class文件的一侧),因为这样你就不得不处理安装路径(也称为主路径)。正确的选择是捆绑在JAR你的形象,所以把你的形象在以下路径:

src/main/resources/assets/BA.png 

,并获得它:

Image test = new Image("/assets/BA.png"); 

这是文件树看起来应该像你计算机:

enter image description here