JavaFX:将图像插入 GridPane
Posted
技术标签:
【中文标题】JavaFX:将图像插入 GridPane【英文标题】:JavaFX: Inserting image into a GridPane 【发布时间】:2016-08-07 17:45:18 【问题描述】:基本上,我只想将图像插入到网格窗格中的单元格中。
GridPane gridpane = new GridPane();
gridpane.add(new Image("File:image/myfile.jpg"));
getChildren().addAll(gridpane);
总是告诉我“图像是抽象的,无法实例化”。我在谷歌上搜索了相当广泛的内容,发现我必须将其用作 BufferedImage 或其他东西?但实际上并没有得到它。我在这里做错了什么?
【问题讨论】:
【参考方案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
【讨论】:
【参考方案2】:Image 是一个抽象类,因此无法实例化。您应该使用扩展 Image 的类之一,例如 BufferedImage
BufferedImage img = null;
try
img = ImageIO.read(new File("strawberry.jpg"));
catch (IOException e)
【讨论】:
这是一个 JavaFX 问题;如果 OP 询问 Swing/AWT 图像,这个答案将是合适的。【参考方案3】:看来您对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));
【讨论】:
这让我更进一步(我确实有错误的导入),但现在它告诉我最后一行“没有合适的 add(ImageView) 方法”有错误。是否需要其他导入才能使 ImageView 正常工作? 对不起,我的错。更新了。 太棒了,解决了这个问题。它终于编译了。现在如何将其分配给某个行/列?我已经看到了:gridpane.getChildren().add(new ImageView(image),1,1);没用。 见docs SetRowIndex 和 SetColumnIndex 为我解决了问题。非常感谢。【参考方案4】:你可以试试这个。
GridPane pane = new GridPane();
FileInputStream imageStream = new FileInputStream("us.gif");
Image image = new Image(imageStream);
pane.add(new ImageView(image), 0, 0);
【讨论】:
【参考方案5】:使用这个:
ImageView imageView = new ImageView(new Image(getClass().getResourceAsStream("picture.jpg")));
【讨论】:
以上是关于JavaFX:将图像插入 GridPane的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JavaFX 的 GridPane 中删除“幽灵线”?