2014-10-29 123 views
-2

這是使用JavaFX顯示圖像的簡單代碼。然而,即使我已經運行「Build and Clean」代碼,我的圖像仍然無法加載。ImageView不能在JavaFX中加載圖像

public void start(Stage primaryStage){ 
    Image image = new Image("file: images/knives.jpg"); 
    System.out.println("Is loaded: " + image.isError()); 

    //Add image to pane 
    HBox pane = new HBox(10); 
    pane.getChildren().add(new ImageView(image)); 

    //Add pane to scene 
    Scene scene = new Scene(pane); 

    //Add things to stage 
    primaryStage.setTitle("Test"); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 
+0

Image image = new Image(「/ images/knives.jpg」); – 2014-10-29 05:03:26

+0

除了給予完整路徑ex「file:///home/reegan/temp/serialObservable/trunk/src/main/java/main/2-user-group-icon.png」 – 2014-10-29 05:06:37

+0

ref http:// stackoverflow。 com/questions/10575410/where-does-javafx-scene-image-imageflower-png-look-for-flower-png – 2014-10-29 05:07:58

回答

0
package imageloaded; 

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.image.Image; 
import javafx.scene.image.ImageView; 
import javafx.scene.layout.HBox; 
import javafx.stage.Stage; 

/** 
* 
* @author reegan 
*/ 
public class ImageLoaded extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     Image image = new Image("/images/Javafx_logo_color.png"); 
     System.out.println("Is loaded: " + image.isError()); 

     //Add image to pane 
     HBox pane = new HBox(10); 
     pane.getChildren().add(new ImageView(image)); 

     //Add pane to scene 
     Scene scene = new Scene(pane); 

     //Add things to stage 
     primaryStage.setTitle("Test"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
//  
    } 

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

} 

創建images文件夾下的src。像

[email protected]:~/NetBeansProjects/ImageLoaded/src$ ls 
imageloaded images 
[email protected]:~/NetBeansProjects/ImageLoaded/src/imageloaded$ ls 
ImageLoaded.java 
[email protected]:~/NetBeansProjects/ImageLoaded/src/images$ ls 
Javafx_logo_color.png 

除了你在文件中使用了:

Image image = new Image("file:///home/reegan/NetBeansProjects/ImageLoaded/src/images/Javafx_logo_color.png"); 
+0

感謝您的回覆。 但是,它似乎並沒有爲我工作,w/wo將圖像文件夾放在src下。 我確實有另一個應用程序可以很好地處理不在src下的圖像文件夾。 – ctn 2014-10-29 05:53:36

0

試試這個:

  1. 使用System.getPropery( 「user.dir來」)來獲取應用程序的位置

  2. 追加你的圖像文件的位置例如。 image.gif。假設image.gif是src/sample/images這是包,那麼下面的代碼應該可以工作。

    String appMain = System.getProperty(「user.dir」);

    System.out.println(appMain);

    Image image = new Image(「file:」+ appMain +「/ src/sample/images/image.gif」);

    ImageView imageView = new ImageView(image);

0

在我的特殊情況下,圖像都在那裏 - 在SceneBuilder(我用的是NetBeans 8.2),但運行時應用程序沒有告訴他們。解決方案在我的情況?在SceneBuilder中,切換圖像位置旁邊的「切換到絕對路徑」。