在ImageView的不显示图像:JavaFX的
问题描述:
下面是我用于查看图像和字幕文本一起的代码:针对图像在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
什么可以不显示图像,但只有文字的原因是什么?
答
我相信你只需要将文件和文件夹名称连接到字符串的开头。
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);
'new File(...)'将解析相对于*工作目录*的文件,通过它你很少或没有控制权。 (大多数IDE将使工作目录成为项目目录,虽然它是可配置的,并且显然它在应用程序部署和运行时可能会有所不同)。如果这些文件是应用程序的一部分(即它们将与jar文件捆绑在一起),则应通过类加载器将它们作为资源加载。 (对于'data.txt'文件也是如此。)您始终可以打印出您创建的URL以查看它要加载的内容。 –