2016-04-15 174 views
0

基本上,我只想将图像插入到一个网格内的单元格中。JavaFX:将图像插入GridPane

 GridPane gridpane = new GridPane(); 
     gridpane.add(new Image("File:image/myfile.jpg")); 
     getChildren().addAll(gridpane); 

总是告诉我“图像是抽象的,不能实例化”。我已经谷歌搜索了很大程度上模糊地发现,我必须使用这个作为BufferedImage什么的?实际上并没有得到它。我在这里做错了什么?

回答

6

看来你有Image错误的进口(你可能有java.awt.Image)。你需要一个JavaFX图像进口是

import javafx.scene.image.Image ; 

然后你需要包装的图像中的ImageView,并添加ImageView到网格窗格:

GridPane gridpane = new GridPane(); 
Image image = new Image("File:image/myfile.jpg") 
gridpane.getChildren().add(new ImageView(image)); 
+0

这让我有点进一步(我确实有错误的导入),但现在它告诉我有一个错误,最后一行“没有合适的方法添加(ImageView)”。 是否有另一个importI需要使ImageView工作? – BEASTthisIndustry

+0

对不起,我的坏。更新它。 –

+0

真棒,那照顾它。它最终编译。现在我怎样才能将它分配给某个行/列?我已经看到: gridpane.getChildren()。add(new ImageView(image),1,1); 不起作用。 – BEASTthisIndustry

1

尝试此代码;)

image = new Image("File:image/myfile.jpg"); 
pic = new ImageView(); 
pic.setFitWidth(130); 
pic.setFitHeight(130); 
pic.setImage(image); 
gridpane.add(pic); 

Original Question

0

图片是一个抽象类,因此不能instancied。你应该用谁扩展图像之类的一个,像BufferedImage的

BufferedImage img = null; 
try { 
    img = ImageIO.read(new File("strawberry.jpg")); 
} catch (IOException e) { 
} 
+4

这是一个JavaFX问题;如果操作系统询问Swing/AWT图像,这个答案是适当的。 –

0

你可以试试这个。

GridPane pane = new GridPane(); 
FileInputStream imageStream = new FileInputStream("us.gif"); 
Image image = new Image(imageStream); 
pane.add(new ImageView(image), 0, 0);