2017-01-03 6 views
0

Ich habe viele andere Themen in stackoverflow gelesen, und dennoch scheint keine ihrer Lösungen zu meinem Problem zu passen. Es gibt keine Fehler, nur eine leere Bühne, und ich verstehe nicht warum.Ich kann kein Bild in Javafx laden

public void titleView(Pane pane) 
{ 
    Image img = new Image("file:test.png"); 

    ImageView title = new ImageView(img); 
    title.setImage(img); 
    title.setLayoutX(569); 
    title.setLayoutY(146); 
    title.fitHeightProperty().add(100); 
    title.fitWidthProperty().add(100); 
    title.setVisible(true); 

    pane.getChildren().add(title); 

    System.out.println("success!!!");   
} 

Dies ist die Methode, die ich gemacht habe. Die Datei "test.png" ist nur ein rotes 100x100 Bild in Farbe. Es ist im Projekt und in einem Ordner die ich gemacht habe: res/Texturen/test.png I Weg, um es zu bauen erinnert

Pane pane = new Pane(); 
titleView(pane); 

ich jemand hoffen, dank helfen kann

+1

Was ist der tatsächliche Pfad * relativ zu Ihrem Klassenpfad * nachdem das Projekt erstellt wurde? (Z. B. wenn Sie einen "res" -Teil des Build-Pfads erstellt haben, sollten Sie 'textures/test.png' im Build-Ordner und/oder in der JAR-Datei sehen können). Und was ist das Endziel hier? Werden diese Bilder mit der Anwendung gebündelt? Oder werden Sie sie von einem Speicherort im Dateisystem des Benutzers laden (z. B. über eine Dateiauswahl oder in einem bestimmten Ordner außerhalb der Anwendung)? –

Antwort

0

Alles hat iwth Ihre Dateipfad Referenzen zu tun ...

Image img = new Image(YourMainClassName.class.getClass().getResource("test.jpg").toString()); 

oder ähnliche

+0

Ich habe dies und ein paar andere Varianten versucht, aber keine scheint zu funktionieren. Ich bekomme jedes Mal eine java.lang.NullPointerException. – DingDongDang132

+1

Mit dieser Methode muss das Bild an der gleichen Stelle sein wie 'YourMainClassName' (d. H. Im Standard-Paket oder src-Ordner) – Chris

+0

Ich zähle auf die Verwendung vieler Bilder, und es würde später sehr unordentlich werden. Aber ich habe es trotzdem versucht und trotzdem eine java.lang.NullPointerException bekommen – DingDongDang132

1

Versuchen Sie, diese .getResourceAsStream arbeiten kann:.

Image image = new Image(getClass().getResourceAsStream("pic.png")); 
title.setImage(image); 

getClass() getResource ("...") wirft mich auch NPE in Netbeans.

0

Ich laufe auf dieses Problem viel. Die Art, wie ich anfange, es zu lösen, besteht darin, sicherzustellen, dass die Datei beendet wird. Die meiste Zeit ist im Grunde ein falscher Dateipfad.

Versuche:

File file = new File("YourFile.jpg"); 
    if(file.exists()) 
    { 
     System.out.println("file exist!");//I would print file path here. 
    } 
    else 
    { 
     System.out.println("file does not exist!"); 
    } 

Wenn die Datei Ausfahrten nicht, mit Dateipfad spielen: File file = new File ("src/img/YourFile.jpg");

Wenn die Datei beendet wird, sollte eine der anderen genannten Methoden funktionieren.