2017-06-20 167 views
0

下面是我用于查看图像和字幕文本一起的代码:针对图像在ImageView的不显示图像:JavaFX的

try 
        { 
         Scanner scanner = new Scanner(new File("data.txt")); 
         String text = scanner.useDelimiter("ENDOFFILE").next(); 
         scanner.close(); // Put this call in a finally block 
         System.out.println(text); 
         String[] data = text.split("\n"); 
         for(int i=0;i<data.length;i++) 
         { 
          if(i%2==0) 
          { 
           System.out.println("This is "+data[i]); 
           Image img = new Image(new File(data[i]).toURI().toString(), 100, 0, false, false); 
           ImageView selectedImage = new ImageView(); 
           selectedImage.setImage(img); 
           v.getChildren().addAll(selectedImage); 
          } 
          else 
          { 
           Text t = new Text(data[i]); 
           t.setFont(Font.font("Tahoma", FontWeight.NORMAL, 14)); 
           v.getChildren().add(t); 
          } 
         } 
        } 
        catch(Exception E) 
        { 
         E.printStackTrace(); 
        } 
        root2.getChildren().add(v); 
        Scene scene = new Scene(root2, 1000, 1000); 
        stage.setScene(scene); 
        stage.show(); 
} 

data[i]Udiagram.jpg,其是相同的目录中的程序内。没有发生任何例外,但图像不显示,只显示空文本,如下所示:Text goes here

文件data.txt如下:

UDiagram.jpg 
Hit and Run 
ENDOFFILE 

什么可以不显示图像,但只有文字的原因是什么?

+0

'new File(...)'将解析相对于*工作目录*的文件,通过它你很少或没有控制权。 (大多数IDE将使工作目录成为项目目录,虽然它是可配置的,并且显然它在应用程序部署和运行时可能会有所不同)。如果这些文件是应用程序的一部分(即它们将与jar文件捆绑在一起),则应通过类加载器将它们作为资源加载。 (对于'data.txt'文件也是如此。)您始终可以打印出您创建的URL以查看它要加载的内容。 –

回答

0

我相信你只需要将文件和文件夹名称连接到字符串的开头。

Image image = new Image("file:FOLDER_NAME/imageName.gif"); 
ImageView imageView = new ImageView(); 
imageView.setImage(image); 

imageView.setFitWidth(100); 
imageView.setPreserveRatio(true); 
imageView.setSmooth(true);