2014-10-29 121 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中,切换图像位置旁边的“切换到绝对路径”。